Подтвердить что ты не робот

Выбор определенных полей с помощью select_related в Django

У меня есть две модели статей и блога, связанные с использованием внешнего ключа. Я хочу выбрать только имя блогов при извлечении статьи.

articles = Articles.objects.all().select_related('blog__name')

Созданный запрос показывает, что он выбрал все поля из модели Blog. Я попытался использовать только() и defer() с select_related, но оба они не сработали.

articles = Articles.objects.all().select_related('blog__name').only('blog__name', 'title', 'create_time')

Вышеприведенный запрос привел к ошибке: Недопустимые имена полей, указанные в select_related: Варианты: blog

Как создать запрос, чтобы были выбраны только поля статьи и имя блогов?

4b9b3361

Ответ 1

Вы можете использовать annotate() для этого.

>>> a = Articles.objects.annotate(blog_name=F('blog__name')).first()
>>> a.title
>>> a.blog_name

Ответ 2

select_related должен использоваться на всей модели, а затем вы можете фильтровать его больше. Это будет работать:

Articles.objects.select_related('blog').only('blog__name', 'title', 'create_time')