Django - auf ManyToMany Felder zugreifen
Verfasst: Donnerstag 22. Dezember 2022, 11:23
Ich speichere in einer Datenbank Essen ab (bei mir 'Gerichte' genannt) Für die Zutaten gibt es eine eigene Tabelle.
Auf einer Seite möchte ich neben dem Titel, der Beschreibung und dem Rezept auch die Zutaten ausgeben.
Hier meine Models:
Mit dem View für die Anzeige habe ich Probleme. Ich bekomme es nicht hin eine Liste mit den Zutaten auszugeben. Mir ist auch nicht klar, wie die Zutaten in der Tabelle 'Gerichte' abgespeichert sind. Ich hätte gedacht als Liste der Zutaten-id's. Mein Gedanke war in einer For-Schleife zu jeder id die Zutat in eine neue Liste zu schreiben - hat bisher aber nicht geklappt
Hier der Code vom View:
Für einen Tipp wär ich sehr dankbar.
Auf einer Seite möchte ich neben dem Titel, der Beschreibung und dem Rezept auch die Zutaten ausgeben.
Hier meine Models:
Code: Alles auswählen
class Gerichte(models.Model):
name = models.CharField(max_length=50)
description = models.CharField(max_length=200, null=True, blank=True)
zutaten = models.ManyToManyField("Zutaten")
rezept = models.TextField(null=True, blank=True, default="Zutaten zubereiten und abschmecken. Gericht in passenden Geschirr servieren.")
active = models.BooleanField(default=False)
slug = models.SlugField(unique=True)
def __str__(self) -> str:
return self.name
class Zutaten(models.Model):
name = models.CharField(max_length=50)
description = models.TextField(null=True, blank=True)
gruppe = models.ForeignKey('GruppeZutaten', on_delete=models.SET_NULL, null=True)
slug = models.SlugField(unique=True)
def __str__(self) -> str:
return self.name
Hier der Code vom View:
Code: Alles auswählen
def gericht_details(request, id):
selected_gericht = Gerichte.objects.get(pk=id)
return render(request, 'essensPlan/gericht-detail.html', {
'name': selected_gericht.name,
'description': selected_gericht.description,
'rezept': selected_gericht.rezept
# 'zutaten:' Liste der Zutaten von selected_gericht
})