ER-Diagramm hinzugefügt und Datenmodell um Schulwochen erweitert.

This commit is contained in:
2026-05-11 22:42:17 +02:00
parent b863e6c819
commit 54e5bc276e
20 changed files with 147 additions and 0 deletions

Binary file not shown.

View File

@@ -5,6 +5,10 @@ from .models import Person # Ersetze dies durch deine echten Klassennamen
admin.site.register(Person) admin.site.register(Person)
from .models import Schulwoche # Ersetze dies durch deine echten Klassennamen
admin.site.register(Schulwoche)
from .models import SpeiseplanTag # Ersetze dies durch deine echten Klassennamen from .models import SpeiseplanTag # Ersetze dies durch deine echten Klassennamen
admin.site.register(SpeiseplanTag) admin.site.register(SpeiseplanTag)

View File

@@ -0,0 +1,54 @@
@startuml
entity Person {
+user: User
+rolle: CharField
+klasse: CharField
}
entity User {
+username: CharField
}
entity SpeiseplanTag {
+datum: DateField
}
entity Kategorie {
+name: CharField
}
entity Gericht {
+name: CharField
+ist_vegetarisch: BooleanField
+ist_allergene_frei: BooleanField
+allergene: TextField
+preis: DecimalField
+time_last_change: TimeField
+time_creation: TimeField
+ist_dauerangebot: BooleanField
}
entity Menue {
+tag: ForeignKey(SpeiseplanTag)
+gericht: ForeignKey(Gericht)
+preis: DecimalField
}
entity Bestellung {
+person: ForeignKey(Person)
+menue: ForeignKey(Menue)
+datum_bestellung: DateTimeField
+status: CharField
+bezahlt: BooleanField
}
Person "1" -- "1" User : 1:1
Person "1" -- "1" Gericht : 1:N
Kategorie "1" -- "*" Gericht : 1:N
SpeiseplanTag "1" -- "*" Gericht : 1:N
Menue "1" -- "*" SpeiseplanTag : N:1
Menue "1" -- "*" Gericht : N:1
Person "1" -- "*" Bestellung : N:1
Gericht "1" -- "*" Bestellung : N:1
@enduml

Binary file not shown.

View File

@@ -0,0 +1,43 @@
# Generated by Django 6.0.5 on 2026-05-11 20:35
import datetime
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mensa_app', '0002_alter_bestellung_options_alter_gericht_options_and_more'),
]
operations = [
migrations.CreateModel(
name='Schulwoche',
fields=[
('id', models.CharField(default='test_1', max_length=20, primary_key=True, serialize=False, unique=True)),
('datum', models.DateField(unique=True)),
('ist_aktiv', models.BooleanField(default=False)),
('ist_ferienwoche', models.BooleanField(default=False)),
],
options={
'verbose_name': 'Schulwoche',
'verbose_name_plural': 'Schulwochen',
},
),
migrations.AlterField(
model_name='gericht',
name='time_creation',
field=models.TimeField(default=datetime.datetime(2026, 5, 11, 20, 35, 15, 941417)),
),
migrations.AlterField(
model_name='gericht',
name='time_last_change',
field=models.TimeField(default=datetime.datetime(2026, 5, 11, 20, 35, 15, 941417)),
),
migrations.AddField(
model_name='speiseplantag',
name='schulwoche',
field=models.ForeignKey(default='test_1', on_delete=django.db.models.deletion.CASCADE, to='mensa_app.schulwoche'),
),
]

View File

@@ -0,0 +1,24 @@
# Generated by Django 6.0.5 on 2026-05-11 20:35
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mensa_app', '0003_schulwoche_alter_gericht_time_creation_and_more'),
]
operations = [
migrations.AlterField(
model_name='gericht',
name='time_creation',
field=models.TimeField(default=datetime.datetime(2026, 5, 11, 20, 35, 44, 570572)),
),
migrations.AlterField(
model_name='gericht',
name='time_last_change',
field=models.TimeField(default=datetime.datetime(2026, 5, 11, 20, 35, 44, 570572)),
),
]

View File

@@ -15,10 +15,32 @@ class Person(models.Model):
def __str__(self): def __str__(self):
return f"{self.user.username} ({self.rolle})" return f"{self.user.username} ({self.rolle})"
class Schulwoche(models.Model):
"""Repräsentiert eine Schulwoche mit einem eindeutigen Datum."""
id = models.CharField(max_length=20, unique=True, primary_key=True, default="test_1") # eine eindeutige ID wie "Woche_2024_10"
datum = models.DateField(unique=True) # Datum der Schulwoche (z. B. Montag der ersten Woche)
ist_aktiv = models.BooleanField(default=False)
ist_ferienwoche = models.BooleanField(default=False)
class Meta:
verbose_name = "Schulwoche"
verbose_name_plural = "Schulwochen"
class SpeiseplanTag(models.Model): class SpeiseplanTag(models.Model):
"""Ein bestimmter Tag im Speiseplan.""" """Ein bestimmter Tag im Speiseplan."""
datum = models.DateField(unique=True) datum = models.DateField(unique=True)
schulwoche = models.ForeignKey(
Schulwoche,
on_delete=models.CASCADE,
#related_name='tag_get_schulwoche' # Für Abfragen wie: Schulwoche.tag_get_schulwoche.all()
default = "test_1"
)
class Meta: class Meta:
verbose_name = "Tag mit Speiseplan" verbose_name = "Tag mit Speiseplan"
verbose_name_plural = "Tage mit Speiseplan" verbose_name_plural = "Tage mit Speiseplan"