代码之家  ›  专栏  ›  技术社区  ›  mlissner

在Django中扩展用户模型之后,如何创建模型表单?

  •  4
  • mlissner  · 技术社区  · 14 年前

    我在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
    

    所以,我的问题是,如何创建一个可以访问所有字段的模型窗体,不管它们是来自用户模型还是用户配置文件模型?

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

    2 回复  |  直到 14 年前
        1
  •  3
  •   Pierre-Jean Coudert    14 年前

    您可以创建两个模型表单(一个用于用户,一个用于用户配置文件),或者创建一个包含所有字段的自定义表单,并在视图中分派它们。

    from django import forms
    
    class ContactForm(forms.Form):
        first_name = forms.CharField()
        last_name = forms.CharField()
        location = forms.CharField()
        employer = forms.CharField()
    
        2
  •  0
  •   Ignacio Vazquez-Abrams    14 年前

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