我正在通过创建投票应用程序来学习 django。首先,我有三个模型“用户”、“问题”和“选择”。
class User(....):
....
Questions_voted = models.ManyToManyField(Question)
....
这意味着用户可以为任意数量的问题投票。接下来是问题模型,它很简单,只存储问题文本和投票的人数。
class Question(models.Model):
question_text = models.CharField(max_length=500)
vote_count = models.IntegerField(...)
接下来是 Choices,它有一个 choice_text 并引用它所属的问题。
class Choice(models.Models):
choice_text = models.CharField(models.Model)
question = models.ForeignKey(Question,...)
现在我想存储有关用户为问题选择的选项的信息。当你想到它时就很清楚了,但由于缺乏对 django 模型中字段类型的了解,我陷入了困境。
最佳答案
我建议您更改模型架构。这里是建议的模型:
我添加了 UserVote
模型,其中包含有关 User
选择的 Question
和 Choice
的信息。
from django.conf import settings
class UserVote(models.Model):
question = models.ForeignKey('Question')
choice = models.ForeignKey('Choice')
user = models.ForeignKey(settings.AUTH_USER_MODEL)
编辑:如何阅读建议的模式:User
可以有许多UserVote
(在Django中存在多对一
关系)您只需将 ForeignKey
添加到 UserVote
即可)。每个UserVote
必须有唯一的一个问题
和选择
。剩下的就是你的旧模式。顺便说一句,我使用了鱼尾纹符号( https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model#Crow.27s_foot_notation )。
关于python - 在单个 Django 模型字段中存储两种类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43572250/