在Django中,能对使用`select_related()`查询的对象字段使用`defer()`吗?

11 投票
1 回答
4179 浏览
提问于 2025-04-16 17:10

在我的Django应用中,我想在一个QuerySet上使用select_related()来“跟踪”一个ForeignKey字段,但我只需要访问“跟踪”模型实例中的几个字段。我可以用defer()方法来处理我的“跟踪”字段吗?

比如,如果我有...

class BarModel(models.Model):
    ...
    blah = models.TextField()

class FooModel(models.Model):
    bar = models.ForeignKey(BarModel)
    ...    

...而我正在执行FooModel.objects.all().select_related('bar'),那么我该如何defer()字段blah呢?

谢谢。

1 个回答

15

使用Django的双下划线表示法,如这里所示。

FooModel.objects.all().select_related('bar').defer('bar__blah', ...)

撰写回答