написание запроса django и получение обратно связанных объектов одним нажатием базы данных!

я написал эти модели в 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: я хочу показать имя пользователя этой работы и его навыки. я использовал select_related(), но я могу показать только first_name, но я не могу достичь навыков пользователя.

я хочу написать оптимальный запрос, чтобы получить работу и другую дополнительную информацию, такую ​​как пользователь и навыки этого пользователя! как удар по коду: (я не хочу попадать в базу данных для каждой работы, чтобы получить навыки пользователя)

шаблон work.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 %}

person Mehran    schedule 27.07.2010    source источник


Ответы (1)


Вы, вероятно, никогда не будете смотреть на это снова, но я все равно постараюсь ответить на него.

Я думаю, что это должно работать:

{% for skill in work.user.skill_set.all %}
    {{skill.title}}
{% endfor %}
person Bryce Siedschlaw    schedule 02.08.2011