Wie initiiere ich Werte für Felder in einer Form für die Bearbeitung in einer Vorlage

Ich verstehe, dass du den initiate Parameter für eine Form Klasse aus dieser Frage verwenden kannst.

Ich schaffe ein Bearbeitungsformular und ich versuche herauszufinden, wie man Werte aus einem bereits vorhandenen Objekt initiiert.

Mache ich es auf der Template-Ebene oder in der View-Ebene (ich weiß nicht einmal, wie man es auf der Template-Ebene macht)? Oder vielleicht muss ich das eigentliche Objekt an das Formular weitergeben und in der Formularebene einleiten?

Was ist die beste Praxis?


BEARBEITEN:

Für @Bento: In meiner ursprünglichen Form mache ich so etwas

 class OrderDetailForm(forms.Form): work_type = forms.ChoiceField(choices=Order.WORK_TYPE_CHOICES) note = forms.CharField(widget=forms.Textarea) def __init__(self, creator_list=None, place_list=None, *args, **kwargs): super(OrderCreateForm, self).__init__(*args, **kwargs) if creator_list: self.fields['creator'] = UserModelChoiceField( queryset=creator_list, empty_label="Select a user", ) def clean(self): super(OrderCreateForm, self).clean() if 'note' in self.cleaned_data: if len(self.cleaned_data['note']) < 50: self._errors['note'] = self.error_class([u"Please enter a longer note."]) del self.cleaned_data['note'] return self.cleaned_data 

Wie würde ich das mit ModelForm ?

One Solution collect form web for “Wie initiiere ich Werte für Felder in einer Form für die Bearbeitung in einer Vorlage”

Angenommen, Sie verwenden ein ModelForm, es ist eigentlich ziemlich einfach. Die Aufgabe ist so etwas: ruf das Objekt des Modells ab, das du mit deinem "Bearbeiten" befüllen möchtest, ein neues Formular basierend auf deinem ModelForm erstellen und es mit dem Objekt mit 'Instanz' befüllen kannst.

Hier ist das Skelett deiner Ansicht:

 def view(request): obj = Model.objects.get(pk = objectpk) form = MyModelForm(instance = obj) return render (request, "template", {'form' = form}) 

Sie können auf die 'initial' Werte zugreifen, indem Sie so etwas wie:

 form.fields['fieldname'].initial = somevalue 

Und dann würdest du das Formular wie oben zurückgeben.

  • Wie kann ich Django Social Auth verwenden, um mit Twitter zu verbinden?
  • Benötigen Sie eine erforderliche und optionale Felder in Django Formset
  • Django, Template-Kontext-Prozessoren
  • Django statische Dateien werden nicht mit Standardeinstellung geladen
  • Wie bekomme ich richtig URL für die Login-Ansicht in Vorlage?
  • Django MultiWidget Telefonnummer Feld
  • NoReverseMatch - Django 1.7 Anfänger Tutorial
  • Django "TemplateDoesNotExist" Fehler aber "Loader verwenden django.template.loaders.app_directories.Loader" Datei existiert
  • Objects.all () Abfrage funktioniert nicht
  • Django Vorlage Variablen und Javascript
  • Wie drehe ich {{fieldset.fields}} in Django-Vorlage in einen String?
  • Python ist die beste Programmiersprache der Welt.