[PYTHON] [Django] Wie man Eingabewerte im Voraus mit ModelForm angibt

Was ist Modellform?

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.

Wo setzen Sie diese Technik ein?

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.

Erstens, wie man das Ausblenden in der Vorlage einstellt

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. ** **.

Fügen Sie Formularinformationen in views.py hinzu

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

[Django] Wie man Eingabewerte im Voraus mit ModelForm angibt
So überprüfen Sie das Verhalten von ORM mit einer Datei mit django
Wie man CSS in Django reflektiert
Wie fange ich mit Django an?
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
So löschen Sie abgelaufene Sitzungen in Django
So arbeiten Sie mit BigQuery in Python
Umgang mit aufeinanderfolgenden Werten in MySQL
So führen Sie vom Server gesendete Ereignisse in Django durch
Speichern von CSV-Daten in Amazon Kinesis Streams mit Standardeingabe
Wie man mit verstümmelten Charakteren in json von Django REST Framework umgeht
Umgang mit Speicherlecks in matplotlib.pyplot
[REAPER] Wie man Reascript mit Python spielt
So implementieren Sie Rails-Helfer-ähnliche Funktionen in Django
So entwickeln Sie eine Cart-App mit Django
So reflektieren Sie ImageField in Django + Docker (Kissen)
Umgang mit Laufzeitfehlern in subprocess.call
So implementieren Sie "named_scope" von RubyOnRails mit Django
Wie man tkinter mit Python in Pyenv benutzt
So erstellen Sie eine Rest-API in Django
So verbergen Sie Benutzereingaben in der PySimple-Benutzeroberfläche
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So erhalten Sie mehrere Modellobjekte zufällig in Django
Erklären Sie ausführlich, wie Sie mit Python einen Sound erzeugen
Umgang mit Pyenv-Initialisierungsfehlern bei Fischen 3.1.0
So führen Sie mit OpenCV ein Null-Padding in einer Zeile durch
So führen Sie Tests zusammen mit Python unittest aus
So laden Sie Dateien in Google Drive mit Google Colaboratory
Zugriff mit dem Cache beim Lesen von_json mit Pandas
Verwendung von Bootstrap in der generischen Klassenansicht von Django
So extrahieren Sie Nullwerte und Nicht-Nullwerte mit Pandas
Wie klicke ich mit der rechten Maustaste über die Tastatureingabe in RPA?
Hochladen von Dateien in der generischen Klassenansicht von Django
Wie man Decorator in Django benutzt und wie man es macht
So verweisen Sie auf statische Dateien in einem Django-Projekt
[Python] So geben Sie Listenwerte der Reihe nach aus
Vorgehensweise beim Ausführen von Transaktionen: In Anaconda fehlgeschlagen
Verwendung von Fixture in Django zur Eingabe von Beispieldaten für das Benutzermodell
So schreiben Sie eine benutzerdefinierte Validierung in Django REST Framework
[Go language] So erhalten Sie Terminaleingaben in Echtzeit
Verwendung von Laravel-ähnlichem ORM / Query Builder Orator mit Django
So extrahieren Sie einen Termin in Google Kalender mit Python
So aktualisieren Sie Benutzerinformationen bei der Django RemoteUserMiddleware-Anmeldung
So registrieren Sie dieselben Daten mehrmals mit einer Eingabe auf dem Verwaltungsbildschirm von Django
So manipulieren Sie das DOM im Iframe mit Selen
So lösen Sie den CSRF-Schutz bei Verwendung von AngularJS mit Django
Wie man mit Theano besetzt
So generieren Sie eine Abfrage mit dem IN-Operator in Django
So erhalten Sie alle Schlüssel und Werte im Wörterbuch
[AWS] Umgang mit dem Fehler "Ungültiger Codepunkt" in CloudSearch
Wie mit SQLAlchemy ändern?
Ich kann mich mit Django 3 nicht auf der Admin-Seite anmelden
Für Anfänger, wie man mit häufigen Fehlern in Keras umgeht
So trennen Sie Zeichenfolgen mit ','
Wie man RDP auf Fedora31 macht
Wie man in Django die angezeigte lange Zeichenkette in der Mitte abkürzt ....