我有一个叫做Question的模型,另一个叫做Answer。现在如何在没有显式SQL JOIN的情况下执行此操作?
class Question(models.Model):
text = models.CharField(max_length=140)
class Answer(models.Model):
user = models.ForeignKey(User)
question = models.ForeignKey(Question)
uncertain = models.BooleanField()
text = models.CharField(max_length=30)
我想有一个QuerySet questions
这相当于Question.objects.all()
但包括当前登录的用户的回答。我几乎完全确信,这可以通过SQL中的显式JOIN
来完成,但我确定有更好的方法来使用Django的ORM来完成此操作。
那么我该怎么做呢?
编辑:为了澄清,我希望能够循环查询集,例如, for q in questions
然后能够看到用户是否通过可能是布尔值的q.answered
或可能是Answer对象本身(或None
)的q.answer
之类的东西来回答它。
后者是一个我可能寻找。我很好奇,虽然......第一个显然会碰到数据库一次,但后者会碰到数据库多少次? – 2009-04-15 09:11:02
是的,后者似乎工作,完美!但是,问题依然存在。它会不止一次地触及数据库? – 2009-04-15 09:15:21
一次用于初始查询,每个问题加一次。我想知道......在即将发布的1.1版本中使用聚合可能会有更高效的方式......我不得不考虑它。 – uzi 2009-04-15 09:16:12