我应该使用django';有多对多的选择吗?

我应该使用django';有多对多的选择吗?,django,many-to-many,self-join,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

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
用例是,我基本上有一个问题列表(投票模型),一个选项列表,每个选项映射到一个问题(选项模型),我想保留一个会话列表,在这里我可以跟踪用户回答了什么问题(会话结果模型)。最后,我想与sessions进行比较并做一些事情。例如,如果会话X回答了问题1和问题2,那么找出哪些其他会话也回答了问题1和问题2,在我看来,这将涉及sql中的自连接。 如果这是我的目标,我应该使用多对多吗?我正在考虑替换Session_结果模型中的一行:

questionAsked = models.ManyToManyField(Poll)
在我输入这行代码并运行python manage.py sql polls之后,我看到django自动为我创建了一个联接表,但该表似乎不能满足我未来的需要。 我读了这一页,它似乎没有回答我的问题。 同样考虑到我想要做的事情,我会使用原始sql查询吗


谢谢

因为你没有说你的问题或你的“未来需求”是什么,这是不可能回答的。你可能想看一下思考的部分。抱歉,这是在我的段落中间:例如,如果会话X回答问题1和2,找出其他会话还回答了问题1和2,然后,如果会话X回答的问题1与会话Y回答的问题1相等,那么就不止两个问题这样做。多年来我一直在使用Django,而且我很少使用很多字段,我更喜欢自己定义一对多的关系,以便将来更容易扩展链接文件。