0

我有以下架构:

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连接来获取所有东西。

4

1 回答 1

4

当您创建与另一个模型的关系时,django 在幕后实际上是使用一个名为的字段a_id来本地存储模型上的id模型(它也创建了幕后)。然后,当您访问时,它知道根据表中的实际数据库条目选择哪个。ABidb.aAB

所以:

b.a遵循关系,命中数据库获取A模型

b.a_idb使用包含与模型相关idA本地模型的字段

让我知道这是否没有意义...

于 2013-04-26T23:43:50.693 回答