[django-cs] Re: Jak se zorientovat v ManyToMany

2017-12-22 Thread MirekZv
Ještě mi vlastně uniká toto:
a) [Martin, v odkazu v dokumentaci]: VazebniModel = Group.members.through

b) [Hynek]: VazebniModel = Group._meta.get_field('members').through


To je obojí totéž? - v tom případě bych asi používal to první, jako jednodušší.

Nebo jsi to (Hynku) myslel pro nějaký extra případ, kdy to tím prvním způsobem 
nelze?


-- 
-- 
E-mailová skupina django-cs@googlegroups.com
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 django-cs+unsubscr...@googlegroups.com.
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/1305af1d-4e5a-4535-99c2-601f20aae9ff%40googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/d/optout.


[django-cs] Re: Jak se zorientovat v ManyToMany

2017-12-22 Thread MirekZv
Trochu shrnu, co jsem se dověděl.

Asi by pro začátečníka bylo dobré, kdyby trochu znal historii Djanga, která 
předpokládám byla asi takováto (?):

1. Nejdřív se zavedly ForeignKey a nic víc - pro m2m z toho vyplývalo 
obvyklé řešení s vazební tabulkou.

2. Pak někoho napadlo, že když ve vazební tabulce není nic, než 2 cizí 
klíče, tak ManyToManyField by byla hezká zkratka,
včetně toho řešení s definováním na jedné straně (což je zajímavá a asi 
bezva věc - jak píše Hynek).
Udělala se pro to i podpora do základního admin formuláře, ale jen na té 
jedné straně, kde se to definuje.

3. Pak někoho napadlo, že často v té vazební tabulce bude sloupců víc (než 
jen 2 cizí klíče) a udělalo se (s předchozím nepříliš kompatibilní) řešení 
s through=..
Od podpory v základním admin formuláři se upustilo.

Někde časově mezitím vznikly Inliny, což je jistě bezva věc, pro tento účel.

Teď by se asi dalo filozofovat, co dál, nabízejí se dvě věci:
- buď to nechat jak to je, a nechat lidi, ať si nad to dopíšou, co chtějí;
- nebo přikročit k:
4. Prohlásit řešení bez through= za obsolete, zlikvidovat ho v budoucích 
verzích Djanga.
Bylo by to asi trochu bolestné, nicméně veškerá další řešení, která by se 
nad tím dělala (v jednotlivých aplikacích i v nadstavbových balících) by 
byla jednotně koncipovaná.

 zatím všem vřelé díky 

-- 
-- 
E-mailová skupina django-cs@googlegroups.com
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 django-cs+unsubscr...@googlegroups.com.
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/ee405a62-9199-48c4-989c-6b8e4ce6e627%40googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/d/optout.


Re: [django-cs] Re: Jak se zorientovat v ManyToMany

2017-12-22 Thread MirekZv
>> a jak by měl ten Select s trough fungovat?

Ahoj Honzo,
Možností, jak vymyslet design/ovládání je jistě mraky, ale když už se 
takhle ptáš, tak jedna odpověď se přímo nabízí:

Měl by fungovat úplně přesně stejně jako TabularInline, akorát by měl být 
jako fieldset zamíchatelný kamkoli mezi fieldy/fieldsety té základní 
tabulky.





Dne čtvrtek 21. prosince 2017 11:09:51 UTC+1 Jan Bednařík napsal(a):
>
> 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 >:
>
>> 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>=>> 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 djan...@googlegroups.com 
>> 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 django-cs+...@googlegroups.com .
>> Chcete-li tuto diskusi zobrazit na webu, navštivte 
>> https://groups.google.com/d/msgid/django-cs/a766353f-ccf5-4177-aebc-eaef82d3812d%40googlegroups.com
>>  
>> 
>> .
>>
>> Další možnosti najdete na https://groups.google.com/d/optout.
>>
>
>

-- 
-- 
E-mailová skupina django-cs@googlegroups.com
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 django-cs+unsubscr...@googlegroups.com.
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/57d7b498-af85-4008-9e83-8b0856cefd87%40googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/d/optout.