2017-04-23 61 views
1

我正在通过创建一个轮询应用程序来学习django。对于初学者,我有三种模式用户,问题和选择。在单个Django模型字段中存储两种类型的值

class User(....): 
    .... 
    Questions_voted = models.ManyToManyField(Question) 
    .... 

这意味着用户要为他想要的问题投多少个问题。接下来是问题模型,它很简单,只是存储问题文本和投票人数。

class Question(models.Model): 
    question_text = models.CharField(max_length=500) 
    vote_count = models.IntegerField(...) 

接下来是有choice_text并选择它所属的问题的选项。

class Choice(models.Models): 
    choice_text = models.CharField(models.Model) 
    question = models.ForeignKey(Question,...) 

现在我想存储有关用户为某个问题选择的选项的信息。当你想到它时非常清楚,但是由于缺乏对django模型中字段类型的了解而被卡住了。

回答

2

我建议你改变模型模式。这里建议型号:

Suggested ER model

我加UserVote模型保存由UserQuestionChoice选定的信息。

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秒(有Many-To-One关系 - 在Django只需添加ForeignKeyUserVote)。每个UserVote必须有一个且只有一个QuestionChoice。其余的是你的旧模式。顺便说一句,我用乌鸦的脚记(https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model#Crow.27s_foot_notation)。

+0

嘿谢谢!那些符号是多对一的吗? –

+1

是的,有“多对一”的关系。请参阅编辑我的答案。 – illagrenan

相关问题