Pie*_*tro 2 python django django-models python-decorators
在Django中是否可以使用预先加载属性装饰器?
我的代码作为例子
class Player(models.Model):
roles = models.ManyToManyField(Role, related_name='players')
@property
def role(self):
return ", ".join([r.name for r in self.roles.all().order_by('name')])
Run Code Online (Sandbox Code Playgroud)
使用属性输出播放器角色时,每次都会运行查询.
实际上我仍然不知道Django的负载是如何的.我找不到任何关于它的好文档.
谢谢
这是一个术语问题.Django docs/source不像SQLAlchemy那样引用"急切"加载.相反,Django具有查询过滤器select_related()和prefetch_related()过滤器,这些查询在QuerySet API参考中有记录.
但这是您添加到查询中的内容,而不是声明属性.所以你prefetch_related('roles')在查询时会使用Player.
| 归档时间: |
|
| 查看次数: |
1069 次 |
| 最近记录: |