Нужна помощь в отображении элементов из отношения ManyToMany в шаблоне Django
У меня возникают трудности с отображением элементов из многих полей в моем html-файле.
models.py
class Ingredients(models.Model):
name = models.CharField('Nazwa', max_length = 100)
ingredient_category = models.ForeignKey(ProductCategory, on_delete=models.CASCADE)
class ShoppingList(models.Model):
name = models.CharField('Nazwa', max_length = 100)
status = models.BooleanField(default = False)
last_updated = models.DateTimeField('Ostatnia aktualizacja', auto_now=True)
publish = models.DateTimeField('Stworzono', default=timezone.now)
ingredient_list = models.ManyToManyField(Ingredients, related_name='shopping_list')
slug = models.SlugField(unique=True, blank=True, max_length=254)
views.py
class HomePageView(TemplateView):
template_name = "homepage.html"
def get_context_data(self, **kwargs):
context = super(HomePageView, self).get_context_data(**kwargs)
shopping_list = ShoppingList.objects.all()
context['shopping_list'] = shopping_list
return context
homepage.html
{% for list in shopping_list.ingredient_list.all %}
<div class="tab-pane fade {% if forloop.first %}show active{% else %}{% endif %}" id="list-{{list.id}}" role="tabpanel" aria-labelledby="list-{{list.id}}-tab">{{list.name}}</div>
{% endfor %}
Любая помощь о том, как правильно отображать элементы в моем файле шаблона, будет оценена по достоинству.
При слишком большом количестве полей вам придется делать вложенный цикл for. Допустим, у вас есть что-то вроде этого в ваших представлениях.
shoping_list = shoppinglist.objects.all()
context = {"shopping_list": shopping_list}
HTML
{% for i in shopping_list %}
{{i.name}} <-- displays name from shopping list model
{% for ingredient in i.ingredient_list.all%}
{{ingredient.name}}
{{ingredient.ingredient_category}}
Вот как можно получить доступ к элементам.