Podívejte se na obrázek, jsou tam dva inliny a na začátku každého z nich popup s vyplněným jménem Lenka.
Jak se ty popupy liší? jeden má "rušící křížek", druhý ho nemá.
Jak se liší návrh databáze? Jedno ForeignKey připouští null/blank=True, druhé ho nepřipouští.
To null se dá samozřejmě nastavit manipulací popupu pomocí např. myši.
Takže nepřekvapuje, že ten křížek dělá něco jiného.
Zruší osobu Lenka (s celou soustavou CASCADE deleting záznamů).
Když nad tím budeme přemýšlet, nějakou stopu logiky najdeme:
V obou případech by mohlo být legitimní osobu Lenka zrušit (i když proč takovou čistku zrovna při add/edit úplně jiného záznamu?). Ovšem ve druhém případě bychom místo té zrušené musely do ForeignKey vybrat nějakou jinou osobu (která už ani nemusí v tabulce být, Lenka může být poslední).
Ovšem i když jako programátor tyhle souvislosti nahlédneme, stejně je to trochu příliš překombinované. A jak to má pochopit ubohý uživatel?
Neboli se ptám:
Jak můžu tuhletu nebezpečnou featuru zakázat?
Dokážu to jedině Javascriptem nebo jsem přehlédnul nějaké nastavení?
Díky pokud někdo poradí ...