В Django могу ли я `отложить ()` поля в объекте, к которому запрашивается `select_related()`

#python #django #django-queryset #django-select-related

#python #django #django-queryset #django-select-related

Вопрос:

В моем приложении Django я хочу использовать select_related() on QuerySet для «следования» ForeignKey полю, но мне нужно получить доступ только к нескольким полям в экземпляре модели «followed». Могу ли я каким-то образом использовать defer() метод с моим полем «followed».

например, если у меня есть…

 class BarModel(models.Model):
    ...
    blah = models.TextField()

class FooModel(models.Model):
    bar = models.ForeignKey(BarModel)
    ...    
  

… и я делаю, FooModel.objects.all().select_related('bar') как я могу defer() использовать поле blah .

Спасибо.

Ответ №1:

Используя обозначение с двойным подчеркиванием в Django, как показано здесь.

 FooModel.objects.all().select_related('bar').defer('bar__blah', ...)
  

Комментарии:

1. Примечание: в настоящее время существует открытая проблема с select_related для отношения o2o и методом ‘only()’ (‘defer’ работает нормально). code.djangoproject.com/ticket/23051 (возможно, это было бы кому-то полезно)