Как показать связанный внешний ключ в наборе запросов django?

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

enter image description here

Я хочу, чтобы таблица карьеры получала имя_тега_карьеры и hex_код из цвета таблицы. Я пробовал Career.objects.raw(). вот запрос в views.py:

careers = Career.objects.raw('''SELECT website_career_tag.career_tag_name,website_color.hex_code, website_career.* 
from website_career INNER JOIN website_career_tag on website_career_tag.id = website_career.career_tag_id_id 
LEFT JOIN website_color on  website_career_tag.color_id_id = website_color.ID''')

работает отлично, пока я не хочу использовать filter() по career_tag_name. когда я использую query set, это проще, чем сделать его необработанным для фильтрации.

как мне превратить эти необработанные запросы в набор запросов?

Всегда лучше использовать собственный ORM от django, а не сырые запросы, и это также довольно просто. Django querysets всегда и везде хранит всю связанную информацию таблицы, вы должны просто ссылаться на них из объекта. Например, для представления списка карьер вы можете получить всю информацию о карьере и выбрать связанные поля, чтобы сделать циклы менее затратными в шаблонах:

careers = Career.objects.select_related('career_tag_id', 'career_tag_id__color_id')

А затем в шаблоне просто ссылайтесь на связанные объекты как:

{% for career in careers %}
{{ career.career_tag_id.career_tag_name }}
{{ career.career_tag_id.color_id.color_name }}
{% endfor %}
Вернуться на верх