Neues Gericht anlegen funktioniert!
This commit is contained in:
BIN
Binary file not shown.
+29
@@ -0,0 +1,29 @@
|
|||||||
|
# Generated by Django 5.2.14 on 2026-06-26 08:55
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('mensa_app', '0011_alter_person_options_alter_gericht_time_creation_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='gericht',
|
||||||
|
name='beschreibung',
|
||||||
|
field=models.TextField(blank=True, null=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='gericht',
|
||||||
|
name='time_creation',
|
||||||
|
field=models.TimeField(default=datetime.datetime(2026, 6, 26, 8, 55, 13, 383962)),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='gericht',
|
||||||
|
name='time_last_change',
|
||||||
|
field=models.TimeField(default=datetime.datetime(2026, 6, 26, 8, 55, 13, 383962)),
|
||||||
|
),
|
||||||
|
]
|
||||||
+15
-14
@@ -5,7 +5,7 @@ from django.utils import timezone
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from django.views.generic import ListView, TemplateView
|
from django.views.generic import ListView, TemplateView
|
||||||
from django.views.generic.edit import CreateView
|
from django.views.generic.edit import CreateView
|
||||||
from django.shortcuts import redirect # Importiere die Redirect-Funktion
|
from django.shortcuts import redirect, reverse # Importiere die Redirect-Funktion
|
||||||
from .forms import GerichtForm # Importiere dein neues Formular
|
from .forms import GerichtForm # Importiere dein neues Formular
|
||||||
from .models import Gericht, Menue, SpeiseplanTag, Bestellung
|
from .models import Gericht, Menue, SpeiseplanTag, Bestellung
|
||||||
|
|
||||||
@@ -113,31 +113,32 @@ class GerichtCreateView(CreateView):
|
|||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
"""
|
"""
|
||||||
Der magische Hook: Wird ausgeführt, wenn das Formular erfolgreich validiert wurde.
|
Die korrigierte Version der Form-Validierung.
|
||||||
Wir speichern ZUERST das Hauptobjekt (Gericht) und DANN die Kinder (Bilder).
|
Das 'form' Argument wird hier explizit als zweites Argument deklariert, um den TypeError zu verhindern.
|
||||||
"""
|
"""
|
||||||
|
# 1.!!! WICHTIG: Das Aufrufen von super().form_valid() MUSS der allererste Befehl sein!
|
||||||
|
# Django speichert damit das Hauptobjekt (das Gericht) und übergibt es als self.object
|
||||||
|
super().form_valid(form)
|
||||||
|
|
||||||
# 1. !!! HIER IST DIE KORREKTUR !!!
|
# Jetzt sind wir sicher, dass das Objekt gespeichert wurde und Zugriff auf das neu erstellte Objekt haben:
|
||||||
# Das super().form_valid() MUSS der ALLERERSTE Befehl sein, damit Django weiß,
|
newly_created_dish = self.object
|
||||||
# dass es das Hauptobjekt speichert und den Key zurückgibt!
|
|
||||||
gericht_instance = super().form_valid()
|
|
||||||
newly_created_dish = self.object # Self.object enthält jetzt das gerettete Gericht-Objekt
|
|
||||||
|
|
||||||
# 2. Bildverarbeitung (Nur ausführen, wenn Dateien hochgeladen wurden)
|
# 2. Bilder verarbeiten (Der kritische Schritt nach der Speicherung)
|
||||||
uploaded_files = self.request.FILES.getlist('bilder')
|
uploaded_files = self.request.FILES.getlist('bilder') # Achtung: self.request wird hier genutzt!
|
||||||
|
|
||||||
if uploaded_files:
|
if uploaded_files:
|
||||||
for file in uploaded_files:
|
for file in uploaded_files:
|
||||||
try:
|
try:
|
||||||
GerichtBild.objects.create(
|
GerichtBild.objects.create(
|
||||||
gericht=newly_created_dish, # Verknüpfung zum Parent (neue Instance)
|
gericht=newly_created_dish,
|
||||||
image=file, # Das hochgeladene File-Objekt
|
image=file,
|
||||||
sort_order=0
|
sort_order=0 # Setze eine Standardreihenfolge
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"WARNUNG beim Speichern des Bildes {file.name}: {e}")
|
print(f"WARNUNG beim Speichern des Bildes {file.name}: {e}")
|
||||||
|
|
||||||
return super().form_valid() # Das Ergebnis muss immer zurückgegeben werden!
|
# Wir müssen danach explizit den Return-Wert festlegen, damit Django weitergeleitet werden kann.
|
||||||
|
return super().form_valid(form)
|
||||||
|
|
||||||
# Optional: Setzen des initialen Datenzustands (z.B. Datum, falls relevant)
|
# Optional: Setzen des initialen Datenzustands (z.B. Datum, falls relevant)
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
|
|||||||
Reference in New Issue
Block a user