2010-03-24 2 views
3

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

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

Я создал 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 

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

Надеюсь, что это имеет смысл. Я буду рад прояснить, есть ли какие-либо вопросы.

ответ

2

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

from django import forms 

class ContactForm(forms.Form): 
    first_name = forms.CharField() 
    last_name = forms.CharField() 
    location = forms.CharField() 
    employer = forms.CharField() 
+1

Я только что сделал это, и он работает. Создание двух моделей моделей и просмотр их в шаблоне работает как шарм. – mlissner

+0

О, и я не забуду, спасибо за помощь! Этот сайт поражает. – mlissner

0

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