我創建了一個UserProfile模型,我想將它與django內置的User模型連接起來。在我的情況下,我想同時更新UserProfile信息和用戶信息。 我的用戶配置模式:Django - 爲同一視圖使用多個模型和表單
class UserProfile(models.Model):
user = models.OneToOneField(User)
street = models.TextField(max_length=100, null=True)
我的形式:
class UserForm(ModelForm):
class Meta:
model = User
fields = ['first_name', 'last_name', 'email']
widgets = {
'first_name': TextInput(attrs={'required': True, 'size': 28}),
'last_name': TextInput(attrs={'required': True, 'size': 28}),
'email': EmailInput(attrs={'required': True, 'size': 28}),
}
class UserProfileForm(ModelForm):
class Meta:
model = UserProfile
fields = ['street']
widgets = {
'street': TextInput(attrs={'required': False, 'placeholder': ' Street'}),
}
而我的觀點:
class UpdateUserAccountView(SuccessMessageMixin, UpdateView):
model = User
template_name = 'dashboard/update_user_account.html'
success_message = 'Profile successfully updated'
form_class = UserForm
success_url = '/dashboard/account'
def get_context_data(self, **kwargs):
context = super(UpdateUserAccountView, self).get_context_data(**kwargs)
context['title'] = 'Update Profile'
context['user'] = User.objects.all()
context['userprofile'] = UserProfile.objects.all()
return context
我可以更新屬於用戶,不以用戶配置的所有信息。但是,如果我改變
model = User
到model = UserProfile
和form_class = UserForm
到form_class = UserProfileForm
我可以更新街,但沒有名字,姓氏或電子郵件。 因此,我需要這些模型和表單之間的連接。 我嘗試這樣做:
model = User, UserProfile
form_class = UserForm, UserProfileForm
但後來我得到這個錯誤:
'tuple' object has no attribute '_default_manager'
請幫幫忙!
請注意,從1.5開始不再推薦使用單獨的UserProfile,因爲您現在可以定義包含所有字段的自定義User子類。 –
你好,謝謝你的幫助。我會嘗試。 – user3083117