Django JOIN删除了所需的列

时间:2014-08-03 13:31:48

标签: python mysql django

我尝试使用外键字段将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从我生成的查询集中删除列?我真的希望找回一个完全连接的表格。

2 个答案:

答案 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