我可以在 Django 模型中指定加入策略吗?

Can I specify join strategy right in a django model?

有没有办法不在查询中(使用 prefetch_relatedselect_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()