ModelForm ist eine vorbereitete Instanz, die mit django.forms.Modelform aufgerufen werden kann. Durch Erstellen einer Formularklasse, die diese Instanz erbt, können Sie auf die in Models.py definierte Tabelle verweisen. Mit anderen Worten, es wird verwendet, wenn Sie die Datenbank registrieren oder aktualisieren möchten, indem Sie ein Formular vom Benutzer eingeben.
Wenn Sie beispielsweise die Formulareingabe eines Benutzers für ein Datenmodell implementieren, dessen Felder "Titel, aktuelle Uhrzeit, Ersteller" enthalten, verringert die Aufgabe, dem Benutzer die aktuelle Uhrzeit und den Ersteller mitzuteilen, die Benutzeroberfläche. Dies kann erreicht werden, indem Sie dem Formular einen Anfangswert geben und das entsprechende Feld ausblenden, wenn Sie Informationen angeben möchten, mit denen sich der Benutzer nicht oder automatisch befassen muss.
forms.py
from django import forms
from .models import Event
class EventCreateForm(forms.ModelForm):
class Meta:
model = Event
fields = ('eventtitle','eventdate','location','agenda','author')
widgets={'author':forms.HiddenInput()
}
Um diejenigen kurz zu erklären, die ModelForm nicht kennen, werden in der Meta-Klasse grundsätzlich verschiedene Bedingungen übergeben. Geben Sie in der Modellvariablen die Ereignisklasse von models.py an, indem Sie sie instanziieren. Geben Sie in der Feldvariablen die Felder an, die als Listentyp in das Formular aufgenommen werden sollen.
Mit der Widgets-Variablen können Sie verschiedene Optionen angeben, z. B. die Eingabeanzeige des Felds in HTML ändern und eine Fehlermeldung angeben.
** Dieses Mal wird das Autorenfeld in diesen Widgets zunächst auf Versteckte Eingabe gesetzt, um es auszublenden. ** **.
views.py
from django.contrib.auth.models import User
from .forms import EventCreateForm
def createeventfunc(request):
if request.method == 'POST':
form =EventCreateForm(request.POST)
if form.is_valid():
form.save()
return redirect('Übergangsziel')
return render(request,'createevent.html',{'form':form})
#Führen Sie zum Zeitpunkt der Get-Methode Folgendes aus
#default_Setzen Sie den Wert in den Daten auf das Autorenfeld
else:
default_data = {'author':User.objects.get(pk=request.user.pk)}
form = EventCreateForm(default_data)
return render(request,'createevent.html',{'form':form})
Der Standardwert wird beim Erstellen eines Formularobjekts als Argument angegeben. Wenn im obigen Beispiel url und createeventfunc () von der Get-Methode aufgerufen werden, wird ein Formularobjekt mit dem Autor erstellt: der ID (pk) des angemeldeten Benutzers als Standarddaten. Und wir rendern dieses Formularobjekt. Wenn "Senden" im Formular gedrückt wird (unter der Annahme einer POST-Übermittlung), wird die obige if-Anweisung ausgeführt. Sie müssen lediglich form.save () ausführen, um die Registrierung in der Datenbank abzuschließen.
Recommended Posts