я записал эти модели в 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 %}