Kategorien für Gerichte ergänzt

This commit is contained in:
2026-05-08 00:17:07 +02:00
parent a9afaff671
commit 932d17d12a
11 changed files with 58 additions and 47 deletions

View File

@@ -18,16 +18,42 @@ class SpeiseplanTag(models.Model):
def __str__(self):
return self.datum.strftime('%d.%m.%Y')
class Gericht(models.Model):
"""Ein einzelnes Gericht (z.B. 'Nudeln mit Tomatensauce')."""
name = models.CharField(max_length=100)
ist_vegetarisch = models.BooleanField(default=False)
allergene = models.TextField(blank=True)
preis = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
class Kategorie(models.Model):
"""
Definiert die Art der Speise (Süßspeise, Hauptgericht, etc.).
"""
name = models.CharField(max_length=50, unique=True, default="")
class Meta:
verbose_name_plural = "Kategorien"
def __str__(self):
return self.name
class Gericht(models.Model):
"""Ein einzelnes Gericht (z.B. 'Nudeln mit Tomatensauce')."""
name = models.CharField(max_length=100)
# PROTECT verhindert, dass eine Kategorie gelöscht wird,
# solange noch Gerichte ihr zugeordnet sind.
kategorie = models.ForeignKey(
Kategorie,
on_delete=models.PROTECT,
related_name='gerichte'
)
ist_vegetarisch = models.BooleanField(default=False)
ist_allergene_frei = models.BooleanField(default=False)
allergene = models.TextField(blank=True, default="")
preis = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
# Das Attribut für das "Dauerangebot"
ist_dauerangebot = models.BooleanField(
default=False,
help_text="Wenn aktiviert, ist dieses Gericht immer verfügbar und nicht an einen spezifischen Tag gebunden."
)
def __str__(self):
return f"{self.name} ({self.kategorie.name})"
class Menue(models.Model):
"""Eine Kombination von Speisen für einen Tag (z.B. Hauptgang + Dessert)."""
tag = models.ForeignKey(SpeiseplanTag, on_delete=models.CASCADE, related_name='menues')