Wie lege ich die Reihenfolge der Felder im Django-Formular fest?

Hassen

Wir verwenden Django 2.2 und ich möchte auf Django 3.0 aktualisieren. Wir haben ein Mixin (geschrieben im Jahr 2017), das Felder zu Formularen hinzufügt:

class LocalizedFirstLastNameMixin(object):
    def __init__(self, *args, **kwargs):
        self.language_code = kwargs.pop('language_code', 'en')
        super().__init__(*args, **kwargs)
        for loc_field in reversed(self.get_localized_fields()):
            self.fields[loc_field] = User._meta.get_field(loc_field).formfield()
            self.fields[loc_field].required = True
            self.fields.move_to_end(loc_field, last=False)
            self.initial[loc_field] = getattr(self.instance, loc_field, '')

self.get_localized_fields()gibt ('first_name_en', 'last_name_en')(in dieser Reihenfolge) in Englisch oder in der gleichen lokalisierten Sprache in der aktuellen Sprache zurück, die wir verwenden.

Dieses Mixin wird als eine der Basisklassen für Formulare verwendet, die erben von ModelForm:

class RegistrationForm(AddAttributesToFieldsMixin, CleanEmailMixin, CleanNewPasswordMixin, CleanDateOfBirthMixin, LocalizedFirstLastNameMixin, forms.ModelForm):
    ....

class ProfileForm(AddAttributesToFieldsMixin, CleanDateOfBirthMixin, LocalizedFirstLastNameMixin, forms.ModelForm):
    ....

Es funktioniert mit Django-Versionen bis 2.2. Aber wenn ich auf 3.0 upgrade, erhalte ich diese Fehlermeldung:

AttributeError: 'dict' object has no attribute 'move_to_end'

Informationen zu dieser Funktion:

Move an existing element to the end (or beginning if last==False).

Und es gehört dazu OrderedDict.

Ich denke, wir möchten, dass sich diese Felder am Anfang der Formularfelder befinden.

Gibt es eine Änderung bei der Implementierung der Felder in Formularen in Django 3.0 und wie lege ich die Reihenfolge der Felder fest? Und wenn ich es ändere, funktioniert es in früheren Versionen wie Django 2.2?

Ich habe die Versionshinweise von Django 3.0 und auch Versionen von 3.0.1 bis 3.0.5 überprüft und keine Dokumentation zu diesem Problem gefunden.

Update: Ich habe herausgefunden, dass ich anrufen kann self.order_fields(...), aber wie definiere ich die Felder, die aus den Modellen stammen? Ich möchte nur zwei zusätzliche Felder am Anfang der Feldliste hinzufügen.

Hassen

Ich habe in der Mailingliste der Django-Entwickler nachgefragt und mir wurde gesagt, die Reihenfolge der Felder nicht selbst zu ändern, sondern stattdessen die hier dokumentierten unterstützten API-Methoden zu verwenden . Also habe ich den Code geändert und self.order_fieldsstattdessen verwendet:

class LocalizedFirstLastNameMixin(object):
    def __init__(self, *args, **kwargs):
        self.language_code = kwargs.pop('language_code', 'en')
        super().__init__(*args, **kwargs)
        localized_fields = self.get_localized_fields()
        for loc_field in localized_fields:
            self.fields[loc_field] = User._meta.get_field(loc_field).formfield()
            self.fields[loc_field].required = True
            self.initial[loc_field] = getattr(self.instance, loc_field, '')
        self.order_fields(field_order=localized_fields)

Beachten Sie, dass ich nur die ersten beiden Felder bestelle. Alle anderen Felder werden in der Standardreihenfolge beibehalten. Ich muss die Felder jetzt auch nicht in umgekehrter Reihenfolge hinzufügen.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Wie lege ich die Reihenfolge der Felder in einem Formular fest? [django-knusprige-Formen]

Wie lege ich die Kategorie aller Elemente in der Antwort im Rest-Framework django fest?

Wie lege ich die Reihenfolge des Bohnenbaus im Frühjahr fest?

Wie entferne ich einen Xtick in einem Subplot (seaborn FacetGrid) und lege trotzdem die Reihenfolge im anderen fest?

Wie lege ich die Version der Abhängigkeiten im Befehl `pip install` fest?

Wie lege ich die Anzahl der dynamischen Kacheln im HCP-Portaldienst fest?

Wie lege ich die Anzahl der Iterationen im PySpark Word2vec-Modell fest?

Wie lege ich benutzerdefinierte Raten für die Drosselung im Django-Rest-Framework fest?

Wie lege ich den Titel der Navigationsleiste im Storyboard fest?

Wie lege ich die Größe der Bitmap in ZXing fest?

Wie lege ich die Farbe der TextInputLayout-Fehlermeldung fest?

Wie lege ich den Mindestwert für das Feld im Formular fest?

Wie lege ich eine Standard-DateTime im Feld fest, wenn ein neues Formular erstellt wird?

Wie lege ich die Reihenfolge für dynamisch hinzugefügte JavaFX-Komponenten fest?

Wie lege ich die Reihenfolge für dynamisch hinzugefügte JavaFX-Komponenten fest?

Wie lege ich die Reihenfolge für dynamisch hinzugefügte JavaFX-Komponenten fest?

Wie lege ich die Anzahl der Threads auf dem Worker-Knoten für dask im Cluster-Modus fest?

Wie lege ich die Standardabsicht fest?

Wie lege ich Standardwerte für Felder in Realm fest?

Django admin: Kann ich die Reihenfolge der Felder definieren?

Wie lege ich die Richtung für die Scheitelpunkte im Netz in Unity fest?

Wie lege ich die Linkfarbe im Nativescript HtmlView-Tag fest?

R-Markdown wie lege ich die Schriftfarbe im Inline-Code bedingt fest?

Wie lege ich die Basis-URL im Java AWS SDK fest?

Wie lege ich die Richtlinienreihenfolge im eigenständigen Mule API-Gateway fest?

Wie lege ich die Java-Heap-Größe (Xms / Xmx) im Docker-Container fest?

Wie lege ich die maximale Breite einer Spalte im CSS-Rasterlayout fest?

Wie lege ich die inneren Eigenschaften einer Schaltfläche im Code fest?

Wie lege ich die IP-Adresse des Kunden im Authorize.net PHP SDK fest?

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv