sqlite 如何在Django查询集中显示相关的外键?

8mmmxcuj  于 2023-01-31  发布在  SQLite
关注(0)|答案(1)|浏览(159)

我是django的新手,我想在另一个表中显示与外键相关的字段。

我想职业表从表颜色中获取了career_tag_name和hex_code。我已经尝试了Career.objects.raw()这是www.example.com中的查询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()by career_tag_name。当我使用查询集时,它比使它成为原始的过滤器更容易。
如何将这些原始查询转换为查询集?

unftdfkk

unftdfkk1#

使用Django自己的ORM总是比使用原始查询更好,而且也很简单。Django的查询集总是存储所有相关的表信息,你只需要从对象中引用它们。例如,对于职业列表视图,你可以获得所有的职业信息,并选择相关的字段,以使模板中的循环成本更低:

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 %}

相关问题