Как заставить select_related () выбрать ForeignKeys с атрибутом null = True? - PullRequest
13 голосов
/ 04 марта 2010

Model1 имеет ForeignKey для Model2. И Model2 имеет ForeignKey (Model3, null = True, пусто = True) для Model3. По умолчанию, когда я использую select_related () для Model1, Model3 не выбирается из-за null = True. Как я могу заставить select_related () следовать за иностранным ключом, который имеет null = True?

Единственный способ, которым я могу придумать, - это явно выбрать эти внешние ключи:

model1s = Model1.objects.all().select_related('model2', 'model2__model3')

Это единственный способ?

1 Ответ

14 голосов
/ 04 марта 2010

Да, именно так вы и выбрали бы связанные элементы с нулевым значением = True.

Прямо из документов для select_related :

Вы можете ссылаться на любое отношение ForeignKey или OneToOneField в списке полей, переданных select_related. Это включает внешние ключи, которые имеют null = True (в отличие от вызова по умолчанию select_related ()).

Есть ли причина, по которой вам нужен другой способ выполнить это действие? Если нет, то вы уже правильно поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...