【发布时间】:2017-03-15 18:43:55
【问题描述】:
Django 的 ORM 有一个名为 select_related() 的方法用于连接相关表。
但是,如果包含的字段是另一个模型的外键,则默认行为似乎是包含相关模型中的所有列。
例如,如果我有模型:
class A(models.Model):
field1 = models.CharField(...)
field2 = models.CharField(...)
class B(models.Model):
field1 = models.CharField(...)
field2 = models.ForeignKey(A)
print str(B.objects.all().select_related('field2').query))
输出:
SELECT myapp_b.id, myapp_b.field1, myapp_b.field2_id, myapp_a.id, myapp_a.field1, myapp_a.field2 FROM ...
但我只想包含A.field1,而不是A 中的所有字段,所以我尝试这样做:
print str(B.objects.all().select_related('b__field1').query))
但输出完全相同的查询。
如何阻止 Django 包含 select_related() 中列出的外键字段中的所有字段?
【问题讨论】: