【问题标题】:After extending the User model in django, how do you create a ModelForm?在django中扩展User模型后,如何创建ModelForm?
【发布时间】:2011-01-31 11:46:19
【问题描述】:

我在 django 中扩展了 User 模型以包含其他几个变量,例如位置和雇主。现在我正在尝试创建一个包含以下字段的表单:

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 模型?

希望这是有道理的。如果有任何问题,我很乐意澄清。

【问题讨论】:

    标签: django extend modelform


    【解决方案1】:

    您可以创建两个模型表单(一个用于 User,一个用于 UserProfile)或创建一个包含所有字段的自定义表单并将它们发送到您的视图中。

    from django import forms
    
    class ContactForm(forms.Form):
        first_name = forms.CharField()
        last_name = forms.CharField()
        location = forms.CharField()
        employer = forms.CharField()
    

    【讨论】:

    • 我刚刚做了这个,它正在工作。建立两个模型表单并在模板中查看它们就像一个魅力。
    • 哦,免得我忘记了,非常感谢您的帮助!这个网站太棒了。
    【解决方案2】:

    你不能。 ModelForm 期望它的所有字段都来自一个模型。创建Form 的子代并从模型中提取字段定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2011-01-11
      • 2014-12-19
      • 2015-10-18
      • 2011-02-18
      相关资源
      最近更新 更多