我可以在 Django 模型中指定加入策略吗?
Can I specify join strategy right in a django model?
有没有办法不在查询中(使用 prefetch_related
或 select_related
),而是在 django 模型中(如 sqlalchemy 中的 lazy='joined'
)指定连接策略?
您可以定义一个管理器来自动应用 select_related
and/or prefetch_related
。例如:
from django.conf import settings
from django.db import models
class <strong>ProfileManager</strong>(models.Manager):
def <strong>get_queryset</strong>(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs)<strong>.select_related(</strong>
'user'
<strong>)</strong>
class Profile(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_deleted=models.CASCADE
)
objects = <strong>ProfileManager()</strong>
如果您随后访问 Profile.objects.all()
,那么它将自动执行 .select_related()
。
有没有办法不在查询中(使用 prefetch_related
或 select_related
),而是在 django 模型中(如 sqlalchemy 中的 lazy='joined'
)指定连接策略?
您可以定义一个管理器来自动应用 select_related
and/or prefetch_related
。例如:
from django.conf import settings
from django.db import models
class <strong>ProfileManager</strong>(models.Manager):
def <strong>get_queryset</strong>(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs)<strong>.select_related(</strong>
'user'
<strong>)</strong>
class Profile(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_deleted=models.CASCADE
)
objects = <strong>ProfileManager()</strong>
如果您随后访问 Profile.objects.all()
,那么它将自动执行 .select_related()
。