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)
|
||||
|
||||
from .models import Schulwoche # Ersetze dies durch deine echten Klassennamen
|
||||
|
||||
admin.site.register(Schulwoche)
|
||||
|
||||
from .models import SpeiseplanTag # Ersetze dies durch deine echten Klassennamen
|
||||
|
||||
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):
|
||||
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):
|
||||
"""Ein bestimmter Tag im Speiseplan."""
|
||||
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:
|
||||
verbose_name = "Tag 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