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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top