如何使用UserProfile中的字段扩展UserCreationForm

goe*_*elv 1 django django-models django-forms django-views django-users

我发现这篇文章关于如何使用诸如"email"之类的额外字段来扩展UserCreationForm.但是,电子邮件字段已在预构建的用户模型中定义.

我创建了一个额外的模型(称为UserProfile),进一步扩展了Django的预构建User类.如何将我在UserProfile中定义的这些字段显示在UserCreationForm中?

sup*_*cuo 9

添加适合您UserProfile模型的字段(ModelForm不幸的是,使用a 来避免重复自己不太容易),然后UserProfile在过度使用的save()函数中创建并保存新实例.改编自您链接到的帖子:

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm


class UserCreateForm(UserCreationForm):
    job_title = forms.CharField(max_length=100, required=True)
    age = forms.IntegerField(required=True)

    class Meta:
        model = User

    def save(self, commit=True):
        if not commit:
            raise NotImplementedError("Can't create User and UserProfile without database save")
        user = super(UserCreateForm, self).save(commit=True)
        user_profile = UserProfile(user=user, job_title=self.cleaned_data['job_title'], 
            age=self.cleaned_data['age'])
        user_profile.save()
        return user, user_profile
Run Code Online (Sandbox Code Playgroud)