【发布时间】:2011-08-02 06:22:26
【问题描述】:
有没有办法告诉 django 在实例化模型实例时不要遵循外键关系?模型本身要放什么东西?传递给查询集的东西?我想要一个只返回带有外键 id 的实例的查询集——我不希望这些实例继续查询以找到它的亲戚。类似于select_related 的反义词?
【问题讨论】:
标签: django django-models
有没有办法告诉 django 在实例化模型实例时不要遵循外键关系?模型本身要放什么东西?传递给查询集的东西?我想要一个只返回带有外键 id 的实例的查询集——我不希望这些实例继续查询以找到它的亲戚。类似于select_related 的反义词?
【问题讨论】:
标签: django django-models
Django 的默认行为是等到访问外键关系后再执行数据库查询以填充相关模型实例。
要避开自动查询相关实例,而不是直接访问 ForeignKey 字段属性,请访问 attribute_id,例如
class Person(models.Model):
name = models.CharField(max_length=200)
user = models.ForeignKey('auth.User')
# access the user id via user_id
person = Person.objects.all()[0]
print person.user_id
【讨论】:
试试defer
【讨论】: