Después de extender el modelo de usuario en Django, ¿cómo se crea un ModelForm?
Pregunta
Me extendió el modelo de usuario en Django para incluir otras variables, tales como la ubicación y el empleador. Ahora estoy tratando de crear un formulario que tiene los siguientes campos:
First name (from User)
Last name (from User)
Location (from UserProfile, which extends User via a foreign key)
Employer (also from UserProfile)
He creado una ModelForm:
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
Por lo tanto, mi pregunta es, ¿cómo puedo crear un ModelForm que tiene acceso a todos los campos, ya sean del modelo de usuario o el modelo PerfilUsuario?
Espero que esto tiene sentido. Voy a ser feliz para aclarar si hay alguna pregunta.
Solución
Puede crear dos modelos de formulario (uno por usuario y otro para PerfilUsuario) o crear un formulario personalizado con todos sus campos y los enviará en su opinión.
from django import forms
class ContactForm(forms.Form):
first_name = forms.CharField()
last_name = forms.CharField()
location = forms.CharField()
employer = forms.CharField()
Otros consejos
No se puede. ModelForm
espera que todos sus campos para provienen de un único modelo. Crear un niño de Form
y tire de las definiciones de campo de los modelos.