Omezit počet dotazů na DB při výpisu seznamů #133
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "perf/select-related-managery"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
__str__řady modelů sahá na související modely (typicky Řešitel → Osoba), takže každý výpis (admin, selecty ve formulářích) dělal dotaz na každý řádek.Změny
SelectRelatedManager(*vazby)(various/models.py): výchozí manager, který zadané FK/OneToOne vazby načte rovnou v jednom dotazu. Nasazený na Resitel, Organizator, Prijemce, Deadline, Cislo, Nastaveni, Soustredeni_Ucastnici, Soustredeni_Organizatori, Konfery_Ucastnici, Seznam, Prednaska, Hlasovani, HlasovaniOZnalostech a Komentar.__str__jde přes M2M, a toselect_relatedneumí. Výchozí prefetch by přidal dotazy ke každému dotazu na řešení (výsledkovky ap.), proto je tu queryset spro_vypis(), který volá jen admin.Reseni.__str__používá.all()místo.first(), aby prefetch zabral.raw_id_fields = ['reseni'], protože formulář jinak vykresloval select se všemi ~25k řešeními. Mění se tím UI: místo selectu je políčko s ID a lupou.prefetch_related_objectsna čísla ročníků.Reseni_Resitele.__str__: odkazoval na neexistujícíself.resitel.Měření (lokální DB)
/org/reseni//archiv/rocniky/makemigrations --checkbeze změn. Testy dopadají stejně jako na masteru (padá jen netrackovanýtests_old.py).Přednášky a korektury lokálně nemají data: ověřené je jen to, že dotazy projdou, ne že se jejich počet snížil.
Co zbývá
Rocnik.verejne_vysledkovky_cisla()dělá dotaz na každý ročník v archivu.🤖 Generated with Claude Code
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.