2017-09-27 1 views
0

Auf einem ModelForm habe ich einige Felder, die voneinander abhängen. Zum BeispielDjango ModelForm Daten zum Kontext hinzufügen

class FactorForm(ModelForm): 
    //field definitions 

    class Meta: 
     model=Factor 
     fields=['name', 'type', 'sets'] 

sets ist eine auswählen, die auf dem type abhängen, die auch eine Auswahl ist. Wenn type geändert wird, sollte ich die Optionen der sets aktualisieren. Daher möchte ich eine Liste von Feldern in die Vorlage (d. H. Refresh = ['type']) einfügen, so dass eine JavaScript-Funktion das Formular ersetzen kann, wenn ein gegebenes Feld geändert wird.

Also, wie kann ich zufällige Daten in den Kontext Formulare einfügen?

Ich kann das durch Überschreiben get_context_data mit generischen CBVs tun. Aber das ModelForm hat keine solche Methode.

Vorzugsweise würde Ich mag die gemeinsame Logik in einer ModelFormParent Funktion setzen, und die Liste meiner erfrischenden Felder unter Meta:

class FactorForm(ModelFormParent): 
    //field definitions 

    class Meta: 
     model=Factor 
     fields=['name', 'type', 'sets'] 
     refresh=['type'] 

Antwort

0

Aufschalten init:

class FactorForm(ModelForm): 
    //field definitions 

    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     self.refresh = ['type'] 

Und dann in der Vorlage:

// something like: 
{{ form.refresh }}