Benutzermodell in django Nach erstrecken, wie schaffen Sie eine Modelform?
Frage
Ich erweiterte die User-Modell in django mehrere andere Variablen umfassen, wie Standort und Arbeitgeber. Jetzt versuche ich, ein Formular zu erstellen, die die folgenden Felder hat:
First name (from User)
Last name (from User)
Location (from UserProfile, which extends User via a foreign key)
Employer (also from UserProfile)
Ich habe eine Modelform erstellt:
from django.forms import ModelForm
from django.contrib import auth
from alert.userHandling.models import UserProfile
class ProfileForm(ModelForm):
class Meta:
# model = auth.models.User # this gives me the User fields
model = UserProfile # this gives me the UserProfile fields
Also, meine Frage ist, wie kann ich eine Modelform erstellen, die den Zugriff auf alle Felder haben, ob sie aus dem User-Modell oder das Userprofil Modell sind?
Hope macht Sinn. Ich werde glücklich sein, zu klären, ob es irgendwelche Fragen.
Lösung
Sie können entweder erstellen zwei Modellformen (eine für Benutzer und eine für Userprofile) oder ein benutzerdefiniertes Formular mit allen Feldern erstellen und versenden Sie sie in Ihrer Ansicht.
from django import forms
class ContactForm(forms.Form):
first_name = forms.CharField()
last_name = forms.CharField()
location = forms.CharField()
employer = forms.CharField()
Andere Tipps
Sie können nicht. ModelForm
erwartet von allen Feldern aus einem einzigen Modell zu kommen. Erstellen Sie ein Kind von Form
und ziehen Sie die Felddefinitionen aus den Modellen.