Tak jsem si trochu osvěžil paměť. V Adminu má Django od verze 2.0 autocomplete_fields, což jsou relační pole (ForeignKey, ManyToManyField), které si dohledávají pro svůj widget přes ajax obsah na adrese autocomplete/. Komunikuje to se .search_fields atributem odkazovaného ModelAdminu, který určuje, ve kterých polích se má vyhledávat to, co uživatel zapíše do popup widgetu. To může být nahrazeno metodou .get_search_results().
Implementace Djanga je slabá (alespoň ve 2.0, ale myslím, že ani později se na to nesáhlo) v tom, že nedokážou rozlišit 2 různé ForeignKey, směřující do stejného modelu. Např. když budete mít v modelu pole "Zadal" a "Schválil", obě směřující do User modelu, nedokážete rozlišit, které právě zadáváte a jak se mají filtrovat dostupné možnosti. Lze udělat trik s rozšířením Referer adresy (request.headers['Referer']) o např. ?key=..., takže .get_search_results() pak může najít, které ForeignKey po něm požaduje výsledky. Kdysi jsem si s tím už hrál a v github.com/pyutil/django-admin-autocomplete-all je to implementováno (a trochu popsáno včetně příkladu volání) v autocomplete_all/js/autocomplete_params.js. Spíš snad jako inspirace, protože za zrovna tuto package bych ruku do ohně nedal. Django 2+ autocomplete_fields ale nepomůžou mimo Admin, takže je opravdu otevřená otázka, jakou cestou jít: Zda se snažit použít django-autocomplete-light všude a kašlat na Dj2 autocomplete_fields nebo zda v Adminu upřednostnit zmíněnou nativní vymoženost. Dne úterý 2. března 2021 v 11:08:31 UTC+1 uživatel MirekZv napsal: > Nemám na to moc času, zatím mně z toho ale vychází, že, jakkoli mám rád ty > stránky simpleisbetterthancomplex, tak tady to je asi ztráta času a krok > nesprávným směrem. > A že správně bude použít django-autocomplete-light, který nejspíš přesně > všechno toto řeší. > > Dne pátek 26. února 2021 v 10:25:08 UTC+1 uživatel MirekZv napsal: > >> Mám ne moc minimalistické, ale pro reálné projekty nutné požadavky na >> popupy (select+options) ve formulářích: >> 1. ajaxem získávané options (mimo admin i v něm) - všude a vždy, i když >> kdyby to umělo automaticky vypnout, když je v modelu méně než např. 100 >> položek, nevadilo by, >> 2. dynamický filtr pro options, zejména když jsou relačně závislé popupy >> (opět mimo admin i v adminu, včetně inlinů); příklad: country & city: jen >> cities z vybrané country mají být na výběr. >> >> Implementoval jsem toto >> >> https://simpleisbetterthancomplex.com/tutorial/2018/01/29/how-to-implement-dependent-or-chained-dropdown-list-with-django.html >> včetně funkcionality (2) v inlinech a dokážu to zprovoznit. >> >> Ale je zatím dost individuální práce pro každý případ, lepší by bylo něco >> generického. >> A neřeší to ten ajax. >> >> Je nějaká rozumná cesta, jak dosáhnout (1)+(2) všude v aplikaci? >> Které packages přidat do projektu? django-autocomplete-light? a ještě >> něco? >> >> Díky... >> PS: samozřejmě, když jsem šel na Django, tak jsem se domníval, že tam jdu >> proto, že takovéto věci dělá out-of-the-box. Ach ta moje naivita. >> >> Best regards, >> Mirek >> > -- -- 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/b7e135a8-66e0-4b97-9087-c00fa5b81325n%40googlegroups.com.