Как показать связанный внешний ключ в наборе запросов django?
Я новичок в django, и я хочу показать поле, которое связано с внешним ключом в другой таблице. вот таблица.
Я хочу, чтобы таблица карьеры получала имя_тега_карьеры и 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 %}