Ahoj, pokud je m2m a through, tak bud musis v adminu pridat ten propojovaci model a editovat jeho zaznamy (coz nemusi byt pohodlne) anebo bude nutne pouzit InlineModelAdmin, protoze ty dodatecne fieldy musi byt mozne nejak editovat. Tohle myslim bude to, co hledas - https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#working-with-many-to-many-models
S pozdravom, Martin Tiršel, tel.: +421 948 199 406 (O2 SR) +420 776 790 511 (Vodafone CR) 2017-12-21 11:09 GMT+01:00 Jan Bednařík <[email protected]>: > Ahoj, > > a jak by měl ten Select s trough fungovat? V tom trough modelu může být > libovolné množství fieldů, které v selectu nemáš jak vyplnit. Pokud > potřebuješ trough model s fieldy navíc, tak to musíš hold plnit v adminu > toho trough modelu. > > Honza > > > > 2017-12-20 18:28 GMT+01:00 MirekZv <[email protected]>: > >> Díky moc za informace. >> No, nepůjde mi to tak rychle, jak jsem si myslel. >> V ORM API (nebo jak mám ten jazyk nazývat?) je to asi fakt symetrické, a >> slouží to (jestli jsem vás dobře pochopil) jako zkratka, aby nebylo potřeba >> zařazovat (v reálu ovšem vždy existující) vazební tabulku. >> Bezva. >> >> Ale v adminu mi to moc symetrické nepřijde a ani podobné jedno druhému. >> >> Bez through=.. se zobrazí Select prvek, ale jen na jedné straně vazby, na >> té, kde je definováno ManyToManyField (našel jsem nějaký 5 let starý >> článek, jak ho přidat i na druhou stranu, a po nějakém úsilí ho doplnil pro >> py36/dj20 a zobecnil). >> >> S through=.. se mi Select nezobrazí vůbec, a při pokusu ho přidat pomocí >> explicitního seznamu fields=[.., ..] řve System Check, že to nelze. >> Tak nevím, jestli je to vůbec přidatelné, nebo to vůbec nelze udělat. >> Pokud to přijatelné je, tak asi přidáním extra datových managerů k modelům >> na první i druhé straně (?). >> >> No, upřímně, čekal jsem, že to nebude taková dřina, a že v roce 2018 je >> to už trochu dále. >> Když třeba budu mít knihu, je schéma (více autorů : více knih) úplně >> jasná věc, a zároveň je autor (resp. autoři) hlavním údajem knihy. Takže >> pod autorem mohu uživatelovi promítnout knihy v Inlinu, ale pod knihou >> promítat autory v Inlinu (a ne v Selectu na hlavní záložce) je prostě >> šílené. >> Tak až zas zbyde nějaký čas, budu se dál snažit... >> >> >> >> >> Dne středa 13. prosince 2017 11:31:23 UTC+1 MirekZv napsal(a): >>> >>> Nemohl byste mě někdo navést? >>> Na všechno o Djangu jsou milióny textů, ale zrovna o tomhle toho je >>> minimum a nemůžu najít nic dobrého. >>> >>> Napřed jsem ani nevěděl, že je nějaká extra podpora (kromě Inlinů v >>> Adminu) a myslel jsem, že prostě do modelu přidám vazební tabulku >>> (minimalisticky se 2 cizími klíči). >>> >>> Pak jsem zjistil, že existuje v modelu ManyToManyField a sice ve 2 >>> vzájemně nekompatibilních verzích: >>> bez through=... >>> s through=... (ten mi v Adminu negeneruje widget; dělám něco blbě nebo >>> to tak má být?) >>> >>> Obě pracují s vazební tabulkou, jen ve druhém případě k ní dělám model >>> vazební tabulky ručně. >>> A jak se tedy varianta s through= liší od toho, když udělám jen tu >>> vazební tabulku a pole ManyToManyField nepoužiju? >>> >>> Mate mě taky to, že m:m relace není nahlížena symetricky, ale že si mám >>> vybrat jen jednu z těch dvou tabulek a do ní ManyToManyField přidat. >>> API pro výběr je (prý) sice stejné, ale v té druhé tabulce nebudu mít >>> příslušný widget. >>> >>> Otázka tedy je: >>> Kterou variantu si mám vybrat a proč? >>> >>> Nejde mi o jednoduchý příklad HlavniTabulka>=<Tagy - to chápu, že tam se >>> hodí ta easy varianta bez through, >>> ale o složitější datová schémata s možností dlouhodobé udržitelnosti a >>> rozvoje (zesložitění schématu). >>> >>> Díky za případné nasměrování .... >>> >>> -- >> -- >> E-mailová skupina [email protected] >> Správa: http://groups.google.cz/group/django-cs >> --- >> Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny >> „django-cs“ ve Skupinách Google. >> Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, >> zašlete e-mail na adresu [email protected]. >> Chcete-li tuto diskusi zobrazit na webu, navštivte >> https://groups.google.com/d/msgid/django-cs/a766353f-ccf5-41 >> 77-aebc-eaef82d3812d%40googlegroups.com >> <https://groups.google.com/d/msgid/django-cs/a766353f-ccf5-4177-aebc-eaef82d3812d%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> Další možnosti najdete na https://groups.google.com/d/optout. >> > > -- > -- > E-mailová skupina [email protected] > Správa: http://groups.google.cz/group/django-cs > --- > Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny > „django-cs“ ve Skupinách Google. > Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, > zašlete e-mail na adresu [email protected]. > Chcete-li tuto diskusi zobrazit na webu, navštivte > https://groups.google.com/d/msgid/django-cs/CAMmgUkMwkAvLN_Q65k% > 3DvQ7fhkObdNPy6MDM9jRjdiu6eDGUt5w%40mail.gmail.com > <https://groups.google.com/d/msgid/django-cs/CAMmgUkMwkAvLN_Q65k%3DvQ7fhkObdNPy6MDM9jRjdiu6eDGUt5w%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > Další možnosti najdete na https://groups.google.com/d/optout. > -- -- E-mailová skupina [email protected] Správa: http://groups.google.cz/group/django-cs --- Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs ve Skupinách Google. Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu [email protected]. Chcete-li zobrazit tuto diskusi na webu, navštivte https://groups.google.com/d/msgid/django-cs/CAEhMMr6dAq1H7N5eeP2x3HVofCwJCc5re69B_vgJAhJiSrotxQ%40mail.gmail.com. Další možnosti najdete na adrese https://groups.google.com/d/optout.
