我在Django的开发系统,我真的很喜欢它。但是我想改进我的代码,但我怀疑Django如何使用外键。
示例:
class A(model.Models):
b = model.IntegerField()
class C(model.Models):
d = models.ForeignKey(A)
#getting...
value = C.objects.get(id=1)
print value.d.b
当我从A类访问属性 b 时,django会在DB中实现咨询吗?或者实现咨询命令 C.objects.get(id = 1)?
如果django在我尝试访问财产时咨询。他会一直在数据库中查询吗?
答案 0 :(得分:1)
你可以这样做:
value = C.objects.select_related('d').get(pk=1)
这可以防止它再次访问数据库。
另见https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related。
答案 1 :(得分:1)
您可以查看Caching and QuerySets以了解将检查db或cache
的人员