После расширения модели пользователя в django, как вы создаете ModelForm?

Я расширил модель пользователя в django, включив в нее несколько других переменных, таких как местоположение и работодатель. Теперь я пытаюсь создать форму со следующими полями:

First name (from User)
Last name (from User)
Location (from UserProfile, which extends User via a foreign key)
Employer (also from UserProfile)

Я создал модельную форму:

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

Итак, мой вопрос: как я могу создать ModelForm, который имеет доступ ко всем полям, независимо от того, относятся ли они к модели User или модели UserProfile?

Надеюсь, это имеет смысл. Буду рад уточнить, если возникнут вопросы.


person mlissner    schedule 24.03.2010    source источник


Ответы (2)


Вы можете либо создать две типовые формы (одну для пользователя и одну для профиля пользователя), либо создать пользовательскую форму со всеми вашими полями и отправить их в свое представление.

from django import forms

class ContactForm(forms.Form):
    first_name = forms.CharField()
    last_name = forms.CharField()
    location = forms.CharField()
    employer = forms.CharField()
person Pierre-Jean Coudert    schedule 24.03.2010
comment
Я только что сделал это, и это работает. Создание двух моделей и просмотр их обеих в шаблоне работает как шарм. - person mlissner; 25.03.2010
comment
О, и чтобы я не забыл, большое спасибо за помощь! Этот сайт потрясающий. - person mlissner; 25.03.2010

Вы не можете. ModelForm ожидает, что все его поля будут взяты из одной модели. Создайте дочерний элемент Form и извлеките определения полей из моделей.

person Ignacio Vazquez-Abrams    schedule 24.03.2010