我在models.py中编写了这些模型:
class User(models.Model): first_name = models.CharField(max_length=80) class Skill(models.Model): user = models.ForeignKey(User) title = models.CharField(max_length=80) level = models.IntegerField(default=3) class Work(models.Model): user = models.Foriegnkey(User) work_name = models.CharField(max_length=80) salary = models.IntegerField()
现在我想从他们的用户具有某种技能的数据库中获取这些作品,并使用它们呈现html。我在views.py中写这段代码:
def show_works(request, skill): works = Work.objects.select_related().filter(user__skill__title=skill) return render_to_response("works.html", {'works':works})
但是我还想在html中展示另一件事:我想展示该作品的用户的first_name和他的技能。我使用select_related(),但我只能显示first_name但我无法达到用户的技能。
我想写一个最佳查询来获取作品和其他额外信息,比如用户和用户的技能!像代码打击: (我不想为每项工作命中数据库以获得其用户的技能)
template works.html:
{% for work in works %} {{work.work_name}} user is : {{work.user.first_name}} which has these skills: {% for skill in work.user.skill %} {{skill.title}} {% endfor %} {% endfor %}
答案 0 :(得分:4)
你可能永远不会再看这个,但无论如何我都会试着回答它。
我认为这应该有效:
{% for skill in work.user.skill_set.all %}
{{skill.title}}
{% endfor %}