0

Django newb 在这里,使用 django polls tutorial 并尝试添加一个模型来跟踪投票结果:

# 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 polls 后,我看到 django 自动为我创建了一个连接表,但该表似乎无法满足我未来的需求。我阅读了https://docs.djangoproject.com/en/1.5/topics/db/examples/many_to_many/页面,它似乎没有回答我的问题。还考虑到我想要做什么,我会使用原始 sql 查询吗?

谢谢!!

4

0 回答 0