Python Django form 1:N:M

kvas

  • ***
  • 106
    • Zobrazit profil
    • E-mail
Python Django form 1:N:M
« kdy: 24. 11. 2022, 09:56:10 »
ahojte, zapasim s Django ako vytvorit form tak aby odpovedal modelu, v ktorom je vazba 1:N:M. V Spring frameworku to je uplna brnkacka (java objekt s kolekciami), ale v Django sa s tym trapim.

Ukazka:
mam objednavku (1. level), ktora moze mat 0-N poloziek (2. level) a kazda polozka moze mat 0-M pod-podloziek (3. level). vazba medzi DB modelmi je M:N (skusal som aj 1:N ale bez vysledku)

priklad:
objednavka ma atributy: meno, priezvisko, cislo
podobjednavka (napr. pizze) ma atributy: farba skatule(modra/biela/cervena), tvar skatule (stvorec/kruh)
pod-podobjednavka (polozky na kazdej pizze) ma atributy: nazov(syr/sunka), mnozstvo(100g/200g)

a toto cele chcem ulozit na jednej stranke. pomozou javascriptu si jednotlive polozky objednavky (pizze a polozky na kazdej pizze) viem pridavat/uberat. neviem ako mam nazvat form fieldy na stranke, aby mi pri submite stranky celu objednavku namapovalu do Django-formu a pripadne zvalidovalo - ako to robi Spring framework nativne.

Je to vebec mozne naimplementovat bez toho aby som musel Django nejako krkolomne ohybat? jedine, co mi napadlo je submitnut to ako "plain HTML form" a vo views.py si to namapovat do vlastneho objektu a ten manualne zvalidovat, tym ale zahodim cely "form-handling" z Django.