Получить объект по ForeignKey во втором уровне вложенности
models.py
class Product(models.Model)
name = models.CharField()
class User(models.Model)
name = models.CharField()
class List(models.Model)
user = models.ForeignKey(User)
class Item(models.Model)
name = models.CharField()
list = models.ForeignKey(List)
user = models.ForeignKey(User)
product = models.ForeignKey(Product)
views.py
class ListView(View)
def get(self, request, pk)
list = List.objects.get(id=pk)
return render(request, "list.html", {"list" : list})
list.html
{% for item in list.item_set.all %}
{{ item.name }}
{{ item.user.name }} - ??
{{ item.product.name }} - ??
{% endfor %}
Как получить user.name и product.name?
Пробовал:
{% item.user_set.first.name %}- не работает{% for user in item.user_set.all %}{{ user.name }}{% endfor %}- не работаетМетод модели
def get_user(self): self.user_ser.get() #не работает
Перерыл весь google и en.stackoverflow не могу найти ответ(
Ответы (1 шт):
Автор решения: Vadim.Sharoikin
→ Ссылка
class ListView(View)
def get(self, request, pk)
list = User.objects.get(id=pk) #изменил модель
return render(request, "list.html", {"list" : list})
К связанным моделям обращаются через ключевое слово _set читайте официальную документацию
{% for a in list %}
<h1>{{a.name}}</h1>
{% for b in a.list_set.all %}
<ul>{{b.user}}</ul>
{% for c in b.item_set.all %}
<li>{{c.product}}</li>
{% endfor %}
{% endfor %}
{% endfor %}