2013-06-02 56 views
1

我正在使用通用pattren使用Django用戶模型,同時通過Userprofile具有OneToOne關係來擴展用戶。Django用戶模型和Userprofile模型的形式相同

我想有一個視圖,它允許我在同一個表單上設置User字段和UserProfile字段。它應該將db事務應用於User和Userprofile表。

我很想使用ModelForm,但是我沒有找到反正我可以在同一個表單中使用兩個模型的方法。

我該如何做到這一點?

+1

的http://stackoverflow.com/q/2770810 – dgel

回答

2

爲您的用戶個人資料創建模型表單併爲用戶模型添加用戶相關字段例如first_namelast_name和保存時剖面模型得到保存用戶字段:

class ProfileForm(forms.ModelForm): 
    first_name = forms.CharField('First Name', max_length=25) 
    last_name = forms.CharField('Last Name', max_length=25) 

    def __init__(self, *args, **kwargs): 
     super(ProfileForm, self).__init__(*args, **kwargs) 

    class Meta: 
     model = ProfileModel 
     exclude = ('user',) 

    def save(self, *args, **kwargs): 
     instance = super(ProfileForm, self).save(*args, **kwargs) 
     user = instance.user 
     user.first_name = self.cleaned_data['first_name'] 
     user.last_name = self.cleaned_data['last_name'] 
     user.save() 
     return instance 
+0

+1可能的複製只是編輯姓氏的標籤,表單字段 – karthikr

+1

@karthikr謝謝 :) –