我试图从模型中延迟一个字段,但是.defer()似乎不起作用。你知道吗
我正在用python2.7运行Django 1.9。你知道吗
(示例代码,简化)
class MyModelA(models.Model):
title = models.CharField(max_lenght=50)
file = models.FileField(upload_to='test/')
class MyModelB(models.Model):
title = models.CharField(max_lenght=50)
defer_this = models.ManyToManyField(MyModelA, blank=True)
query = MyModelB.objects.defer('defer_this')
for i in query:
print i.title, i.defer_this.all()
它把这些物体打印出来。你知道吗
谁能解释一下它是怎么工作的/为什么会这样?你知道吗
根据文件
这意味着defer不会阻止您访问传递给
defer
的属性。它不会从数据库中获取它。当您尝试访问属性时。然后它将从数据库中获取它。你知道吗对于M2M字段,它们默认(有点)延迟。当您查询一个包含M2M字段的模型时,django不会进行连接并从相关表中获取数据。您必须显式地告诉django使用
prefetch_related
和selected_related
进行连接并获取相关数据。你知道吗相关问题 更多 >
编程相关推荐