我有以下架构:
class A(models.Model):
name = models.CharField(max_length=100)
class B(models.Model):
name = models.CharField(max_length=100)
a = models.ForeignKey(A, blank=True, null=True)
将所有B对象拾取到模板
b = B.objects.all()
在我想去的模板中
for n in b:
n.name
if n.a:
do_something()
但由于外键,这是在击中数据库,我只想知道a
是否为空。而且我不想通过加入来获取所有A
内容。
答案 0 :(得分:4)
当您创建与另一个模型的关系时,幕后django实际上使用一个名为a_id
的字段在id
本地存储A
模型的B
} model(它还在幕后创建id
)。然后,当您访问b.a
时,它根据A
表中的实际数据库条目知道要选择哪个B
。
所以:
b.a
跟随关系并点击数据库以获取A
模型
b.a_id
使用包含与b
模型相关的id
的本地A
模型字段
如果这没有意义,请告诉我......