ER-Diagramm hinzugefügt und Datenmodell um Schulwochen erweitert.
This commit is contained in:
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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)
|
||||||
|
|||||||
54
mensa_app/data_diagram_v1.puml
Normal file
54
mensa_app/data_diagram_v1.puml
Normal 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
|
||||||
BIN
mensa_app/data_diragram_v1.pdf
Normal file
BIN
mensa_app/data_diragram_v1.pdf
Normal file
Binary file not shown.
@@ -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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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)),
|
||||||
|
),
|
||||||
|
]
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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"
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user