我尝试使用外键字段将django相互关联的两个表连接起来。
class Question(models.Model):
description = models.TextField('Description', blank=True, null=True)
class Vote(models.Model):
question = models.ForeignKey(Question)
profile = models.ForeignKey(UserProfile)
value = models.IntegerField('Value')
creator = models.ForeignKey(User)
我尝试使用
创建一个查询集questions = Question.objects.filter(vote__creator=3).values()
导致像这样的集合
+----+-------------+
| id | description |
+----+-------------+
....
如果我使用
在mysql中手动运行一个稍微类似的查询select * from questions as t1 join votes as t2 on t1.id=question_id where creator_id=3;
它会产生一个像这样的集合
+----+-------------+------+-------------+------------+-------+------------+
| id | description | id | question_id | profile_id | value | creator_id |
如何防止django从我生成的查询集中删除列?我真的希望找回一个完全连接的表格。
答案 0 :(得分:0)
使用objects.select_related():
questions = Question.objects.select_related().filter(vote__creator=3).values()
答案 1 :(得分:0)
Question.objects.filter(...)
将生成以下SQL
select * from question where question.id in (...)`
因此,正如您所看到的,它与您想要的不同(question join votes
)