Могу ли я указать стратегию присоединения прямо в модели django?
Есть ли способ указать стратегию присоединения не в запросе (с помощью prefetch_related
или select_related
), а прямо в модели django (как lazy='joined'
в sqlalchemy)?
Вы можете определить менеджера для автоматического применения select_related
и/или prefetch_related
. Например:
from django.conf import settings
from django.db import models
class ProfileManager(models.Manager):
def get_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).select_related(
'user'
)
class Profile(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_deleted=models.CASCADE
)
objects = ProfileManager()
Если вы затем обратитесь к Profile.objects.all()
, то он автоматически выполнит .select_related()
.