5986 (Mod ușor de a personaliza ordonarea câmpurilor pe formularele care folosesc moștenirea) - Django
Navigare contextuală
# 5986 închis Funcție nouă (fix)
| Michał Sałaban | Detinut de:nimeni |
| Formulare | Versiune:maestru |
| Normal | Cuvinte cheie:ordinea câmpului greutatea formează noi forme |
| marc.garcia@…, matti.haavikko@…, sime, Simon Charette, Loic Bistuer, tanar | Etapa de triaj:Gata pentru checkin |
| da | Necesită documentație:Nu |
| Nu | Patch-ul are nevoie de îmbunătățiri:Nu |
| Nu | UI/UX:Nu |
Descriere
Luați în considerare acest exemplu:

UserProfileForm poate moșteni toate bunurile UserForm: câmpuri și validatori. Dar ordinea câmpului poate părea cam dezordonată atunci:
Ar fi frumos să aveți e-mailuri grupate cu jabber_id, prenume și prenume cu nume de utilizator etc. Desigur, este posibil să o faceți folosind un șablon personalizat, dar încalcă principiul DRY și face ca metodele _ * () să fie inutile.
Patch-ul atașat permite specificarea unei comenzi de câmp personalizate într-un formular, chiar și cu câmpuri moștenite.
Fiecare câmp poate avea un parametru de greutate suplimentar cu valoarea implicită de 0. Toate câmpurile sunt sortate în ordine crescătoare de greutate.
Formele de exemplu personalizate cu parametri de greutate:
Atașamente (4)
Acum 13 ani. Patch corect, inclusiv teste de regresie django-fields-order.3.patch (5,6 KB) - adăugat de Patryk Zawadzki
Acum 13 ani. A fost adăugat suport pentru form_for_model
Descărcați toate atașamentele ca: .zip
Istoricul modificărilor (45)
Schimbat acum 13 ani de Michał Sałaban
Patch-ul adăugând parametrul de greutate la newforms.Field
comentariu: 1 Schimbat acum 13 ani de patrys @ ...
Ar putea fi mai util să o reimplementați ca meta-proprietate care conține lista dorită de nume de câmpuri (modul în care definiți coloanele de afișat pentru interfața de administrare). În acest fel, fiecare formular poate avea propria sa listă independentă acolo și puteți încerca de fapt să extindeți două forme simultan, menținând în același timp rezultatul corect și previzibil.
comentariu: 2 Schimbat acum 13 ani de Michał Sałaban
Deci, iată-l, cu lista Form.Meta.fields_order.
Schimbat acum 13 ani de Michał Sałaban
A doua abordare, cu Form.Meta.fields_order
Schimbat acum 13 ani de Patryk Zawadzki
Patch corect, inclusiv teste de regresie
comentariu: 3 Modificat acum 13 ani de Patryk Zawadzki
| Ordinea câmpului personalizat în formele noi → [PATCH] Ordinea câmpului personalizat în formele noi |
Schimbat acum 13 ani de Patryk Zawadzki
A fost adăugat suport pentru form_for_model
comentariu: 4 Modificat acum 13 ani de Patryk Zawadzki
comentariu: 5 urmăriri: 6 7 Modificat acum 13 ani de jkocherhans
Îmi pare rău că sunt direct, dar nu aș putea fi mai împotrivă acestei schimbări sau mai bine zis a sintaxei greutate = X. Lucrez la o nouă clasă numită ModelForm chiar acum (căutați django-dev pentru firul relevant) care ar trebui să permită ceva similar cu atributul fields_order de mai sus. Doar se numește câmpuri și va restricționa de fapt și câmpurile care apar în formular.
comentariu: 6 ca răspuns la: 5 Modificat acum 13 ani de Patryk Zawadzki
Îmi pare rău că sunt direct, dar nu aș putea fi mai împotrivă acestei schimbări sau mai bine zis a sintaxei greutate = X. Lucrez la o nouă clasă numită ModelForm chiar acum (căutați django-dev pentru firul relevant) care ar trebui să permită ceva similar cu atributul fields_order de mai sus. Doar se numește câmpuri și va restricționa de fapt și câmpurile care apar în formular.
Acest lucru are puțin sau nimic de-a face cu sintaxa form_for_ *. Aceasta adaugă capacitatea de ordonare pentru toate subclasele Form, deoarece funcționează numai în interiorul metaclasei. Dacă clasa dvs. ModelForm sau orice altă clasă extinde Formular, atunci câștigă această caracteristică gratuit.
Singurul bit relevant ar fi eliminarea micului bloc de cod, inclusiv comentariul despre form_for_ * odată ce aceste funcții mor.
Cred că patch-ul este încă adecvat pentru a comite și adaugă un test de regresie frumos, astfel încât să puteți fi siguri că lucrurile funcționează așa cum au făcut și vor continua să facă acest lucru.
comentariu: 7 ca răspuns la: 5 Modificat acum 13 ani de Michał Sałaban
Îmi pare rău că sunt direct, dar nu aș putea fi mai mult împotriva acestei schimbări, sau mai bine zis a sintaxei greutate = X. Lucrez la o nouă clasă numită ModelForm chiar acum (căutați django-dev pentru firul relevant) care ar trebui să permită ceva similar cu atributul fields_order de mai sus. Doar se numește câmpuri și va restricționa de fapt și câmpurile care apar în formular.
Sintaxa greutății este învechită. Vă rugăm să consultați ultimul patch și exemplu.
Am găsit discuția despre ModelForms, dar nu văd dacă se ocupă de ordinea câmpurilor. Și cum pot fi utilizate pentru a crea formulare care nu sunt bazate pe modele?
Oricum, nu văd nicio problemă în coexistența ModelForms și Meta.fields_order de mai sus.
comentariu: 8 Schimbat acum 13 ani de bear330
Acest lucru ar putea fi inutil, dar modul meu de a comanda câmpurile este:
Oricum, clasa Meta cu fields_order ar trebui să fie o modalitate mai bună, deoarece coordonarea cu convenția django.