首页 文章

编写一个django查询并在一个数据库中获取反向相关对象!

提问于
浏览
5

我在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但我无法达到用户的技能 .

我想写一个最佳的查询来获取作品和其他额外的信息,如用户和用户的技能!像代码打击:(我不想为每项工作命中数据库以获得其用户的技能)

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

1 回答

  • 3

    你可能永远不会再看这个,但无论如何我都会试着回答它 .

    我认为这应该有效:

    {% for skill in work.user.skill_set.all %}
        {{skill.title}}
    {% endfor %}
    

相关问题