我有以下型號:Django:基於過濾器值計數對象的變化?
class Question(models.Model):
question = models.CharField(max_length=100)
detail = models.TextField(null=True, blank=True)
class PossibleAnswers(models.Model):
question = models.ForeignKey(Question)
value = models.CharField(max_length=200)
class Answer(models.Model):
question = models.ForeignKey(Question)
value = models.CharField(max_length=200)
每個Question
已經PossibleAnswers
定義由用戶自定義。例如:問題 - 什麼是最好的水果?可能的答案 - 蘋果,橙子,葡萄。現在其他用戶可以將Answer
的問題與他們的回覆限制爲PossibleAnswers
。
我遇到的問題是每個Answer
計數。有多少人選擇Apple vs Orange vs Grapes?
Question.answer_set.filter(value="Grapes").count()
返回所有葡萄答案的計數,但如果您不知道過濾標準(本例中的葡萄)是什麼?由於用戶定義了答案選項,並且定義了多少種不同的選項,您將如何得到每個答案選項的響應計數?
+1這真的很好。但是,將模型命名爲問題,回答(而不是可能的答案)和金額或選擇或某物(而不是答案)會不會更好,更清晰?我的意思是在這個模式中,Answer模式的功能類似於投票或Like模式,因爲它只是用於計數 – yuvi
不是,模型名稱應該是單數名詞,描述單個對象,所以我不會考慮「計數」或爲模型選擇一個好名字。但是你是對的,如果我們確信'Answer'模型只用於計數,這將不是最佳解決方案。在這種情況下,我會一起擺脫「Answer」模型,並將「count」字段添加到「PossibleAnswer」模型中(然後確實應該將其重命名爲「Answer」)。每當用戶選擇答案時,該字段應該增加。 –
然而,我並沒有選擇這個解決方案,因爲我認爲很可能有每次用戶投票時應記錄的其他信息,例如時間,用戶名或用戶ip。 –