2016-01-12 45 views
0

我需要兩個額外的字段爲用戶數據,所以我遵循官方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,但只填充我的擴展用戶模型的OneToOneField,但不是兩個額外的字段的user_id。 抱歉我的英文不好。從我的擴展用戶模型添加額外的字段到我的UserCreationForm

+0

您是否嘗試過使用'ModelForm'爲您的擴展模型? https://docs.djangoproject.com/en/1.9/topics/forms/modelforms/ –

+0

我也試過這個http://stackoverflow.com/questions/11918355/how-to-extend-usercreationform-with-fields-from -userprofile但不保存額外的字段 –

+0

不,但是我怎樣才能使用ModelForm來擴展模型來保存UserCreationForm中的額外數據? –

回答

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() 
+0

謝謝你這個完美的作品 –

相關問題