Как сделать запрос ко всем полям в django Many to Many
Пытаюсь выполнить цикл по отношениям "многие ко многим", где мне нужны все поля.
Мои модели:
class Recipe(models.Model):
title = models.CharField(max_length=200)
slug = AutoSlugField(populate_from="title")
category = models.ForeignKey(RecipeTopic, on_delete=models.CASCADE)
image = models.ImageField()
description = models.TextField()
ingredients = models.ManyToManyField(Ingredient, through="IngredientList")
directions = models.TextField()
servings = models.IntegerField()
time = models.IntegerField()
cuisine = models.ForeignKey(Cuisine, on_delete=models.CASCADE)
def __str__(self):
return self.title
class IngredientList(models.Model):
ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE)
Recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
amount = models.FloatField(default=1)
unit = models.ForeignKey(Units, on_delete=models.CASCADE)
Мои взгляды:
from .models import Recipe
def home(request):
recipe = Recipe.objects.all()
context = {
"title": "Home Page",
"recipe": recipe
}
return render(request, "home.html", context)
и мой шаблон:
{%for r in recipe %}
<h2>{{r.title}}</h2>
<h4>Ingredients:</h4>
{%for i in r.ingredients.all %}
<p>---{{i.amount}}{{i.unit}} {{i.ingredient}}</p>
{%endfor%}
{%endfor%}
Хочу показать ингредиенты, их количество и единицы измерения, которые идут вместе с ними. Только вот у меня получается только название "ингредиент"
Вы должны запросить обратное ForeignKey
вашей IngredientList
модели:
{% for r in recipe %}
<h2>{{r.title}}</h2>
<h4>Ingredients:</h4>
{% for i in r.ingredientlist_set.all %}
<p>---{{ i.amount }}{{ i.unit }} {{ i.ingredient }}</p>
{% endfor %}
{% endfor %}