从我的扩展用户模型向我的UserCreationForm添加额外的字段

时间:2016-01-12 23:02:50

标签: python django django-models django-forms

我需要两个额外的用户数据字段,所以我按照官方的django文档Extending the existing User model,用户的管理表单工作正常,但我有一个UserCreationForm,我想在该表单中添加两个额外的字段,已经尝试使用两种形式,UserCreationForm和我的扩展用户模型的表单但我无法获取UserCreationForm的id来填充我的扩展用户模型的user_id所以我搜索如何使用信号来做到这一点django文档建议并找到这个Django Signals: create a Profile instance when a new user is created,但只填充我的扩展用户模型的user_id,即OneToOneField而不是两个额外的字段。 抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

我需要跑,但这是一个快速实施。它显然需要一些调整,但应该让你开始:

# this is your model form for extended OneOnOne with user
class ExtendedForm(forms.ModelForm):
    model = ExtendedModel
    # temporary exclude user field to pass the validation
    exclude = ('user')

def create_user(request):
    user_form = UserForm(request.POST or None)
    extra_form = ExtendedForm(request.POST or None)

    if user_form.is_valid() and extra_form.is_valid():
        # create a new user first
        new_user = user_form.save()
        # create an object in memory but not save it
        new_extended_obj = extra_form.save(commit=False)
        # assign the user to the extended obj
        new_extended_obj.user = new_user
        # write to database
        new_extended_obj.save()