Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中,如何将每个用户的条目限制为特定的数字N(N>;1)?_Python_Database_Django - Fatal编程技术网

Python 在Django中,如何将每个用户的条目限制为特定的数字N(N>;1)?

Python 在Django中,如何将每个用户的条目限制为特定的数字N(N>;1)?,python,database,django,Python,Database,Django,我有一个Django web应用程序,它类似于典型的问答系统 用户提出了一个问题。其他用户提交该问题的答案: 每个用户最多可以提交N个问题的答案, 其中N>1(假设每个用户最多可以向 (每个问题) 用户可以编辑其现有答案,或者在需要时提交新答案 还没有达到他的极限 如果每个用户只允许一个答案,那么这样做很简单 -只要做: unique_together = (("user.id", "question_id"),) 但是在N>1的情况下,实现这一点的最佳方法是什么 我会将以下方法添加到您的

我有一个Django web应用程序,它类似于典型的问答系统

用户提出了一个问题。其他用户提交该问题的答案:

  • 每个用户最多可以提交N个问题的答案, 其中N>1(假设每个用户最多可以向 (每个问题)
  • 用户可以编辑其现有答案,或者在需要时提交新答案 还没有达到他的极限
如果每个用户只允许一个答案,那么这样做很简单 -只要做:

unique_together = (("user.id", "question_id"),)

但是在N>1的情况下,实现这一点的最佳方法是什么

我会将以下方法添加到您的问题模型中:

class Question(models.Model):

    def can_answer(self, user):
        return Answer.filter(question=self, user=user).count() < 3
课堂问题(models.Model):
def can_应答(自身、用户):
返回Answer.filter(问题=self,用户=user).count()<3

您可以使用此方法来决定用户是否可以添加问题的答案。

这是您必须在应用程序级别而不是数据库级别强制执行的业务规则。因此,您必须在回答时检查用户是否确实可以发布答案。这可以通过多种方式实现。安德烈是这样做的一种方式。另一种方法是在
Answer.save()
过程中检查这一点。如果您希望使逻辑远离模型,则可以定义一个实用函数
can\u answer(user,question)
,该函数返回
True
False
,并从视图中调用它