我应该使用django的多对多选项吗?

时间:2013-08-08 07:13:32

标签: django many-to-many self-join

Django newb在这里,处理django民意调查教程并尝试添加一个能够跟踪民意调查结果的模型:

# Create your models here.
class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    numChoices = models.IntegerField(default=0)
    def __unicode__(self):
        return self.question

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
    def __unicode__(self):
        return self.choice_text

class Session_results(models.Model):
    sessionKey=models.ForeignKey(Session)
    questionAsked = models.ForeignKey(Poll)
    answerChosen=models.ForeignKey(Choice)
    def __unicode__(self):
        return self.sessionKey

用例是我基本上有一个问题列表(民意调查模型),每个选项映射到一个问题的选择列表(选择模型),我想保留一个会话列表,我可以保留跟踪用户已回答的问题(Session_results模型)。最后,我想比较和做会话。例如,如果会话X回答问题1和2,找出其他会话也回答了问题1和2,在我看来,这将涉及在sql中自我加入。 如果这是我的目标,我应该使用多对多吗?我在考虑替换Session_results模型中的一行:

questionAsked = models.ManyToManyField(Poll)

我把这行放入并运行python manage.py sql民意调查后,我看到django自动为我创建了一个连接表,但该表似乎没有满足我未来的需求。 我看了https://docs.djangoproject.com/en/1.5/topics/db/examples/many_to_many/页面,似乎没有回答我的问题。 还有我想做的,我会使用原始的SQL查询吗?

谢谢!

0 个答案:

没有答案