为了尽量减少竞争访问 django 模型实例的错误,我使用了 QuerySet 的"only"方法。例如,我有这样的模型:
#models.py
class MyModel1(models.Model):
...
class MyModel2(models.Model):
field_1 = models.ForeignKey(MyModel1)
...
我以这种方式使用"仅":
instances = list(MyModel2.objects.filter(...).only('id'))
此时是否会加载实例的字段"field_1_id"(不是"field_1",确切地说是"field_1_id")?
only() 方法只加载模型 MyModel2 的 id。
使用 values_list() 方法签出,如果您只需要一个字段并且您将其传递为平面 = True,该方法可以返回值列表:
instances = MyModel2.objects.filter(...).values_list('id', flat=True)