Dopo l'estensione del modello User in Django, come si fa a creare un ModelForm?
Domanda
ho esteso il modello utente in Django per includere molte altre variabili, come ad esempio la posizione e datore di lavoro. Ora sto cercando di creare un modulo che ha i seguenti campi:
First name (from User)
Last name (from User)
Location (from UserProfile, which extends User via a foreign key)
Employer (also from UserProfile)
Ho creato un 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
Quindi, la mia domanda è, come posso creare un ModelForm che ha accesso a tutti i campi, siano essi dal modello utente o il modello ProfiloUtente?
Spero che questo ha un senso. Sarò felice di chiarire se ci sono delle domande.
Soluzione
È possibile creare due modelli di formulari (uno per utente e uno per ProfiloUtente) o creare un modulo personalizzato con tutti i campi e li spedisce nella vista.
from django import forms
class ContactForm(forms.Form):
first_name = forms.CharField()
last_name = forms.CharField()
location = forms.CharField()
employer = forms.CharField()
Altri suggerimenti
Non è possibile. ModelForm
si aspetta che tutti i suoi campi a venire da un singolo modello. Creare un bambino di Form
e tirare le definizioni dei campi dai modelli.