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)

Raportat de: Detinut de: Componenta: Versiune: Severitate: Cuvinte cheie: Cc: Etapa de triaj: Are patch: Necesită documentație: Necesită teste: Patch-ul are nevoie de îmbunătățiri: Cules ușor: UI/UX:
Michał Sałabannimeni
Formulare maestru
Normal ordinea câmpului greutatea formează noi forme
marc.garcia@…, matti.haavikko@…, sime, Simon Charette, Loic Bistuer, tanar Gata pentru checkin
da Nu
Nu Nu
Nu Nu

Descriere

Luați în considerare acest exemplu:

personaliza

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

Rezumat:
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.