【发布时间】:2016-07-14 18:53:50
【问题描述】:
我使用UpdateView 来更新用户帐户。用户由 User 和 UserProfile 组成,如下所示:
class UserProfile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE,related_name='userprofile')
telephone = models.CharField(max_length=40,null=True)
现在,我创建了一个类UpdateView 以便能够更新例如UserProfile - 电话有效。
表格:
class UserProfileUpdateForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('telephone',)
网址:
url(r'^edit-profile$',view=views.UserUpdate.as_view(),name='user_update'),
查看:
# @login_required
class UserUpdate(UpdateView):
form_class = UserProfileUpdateForm
context_object_name = 'user_update'
template_name = 'auth/profiles/edit-profile.html'
success_url = 'success url'
def get_object(self,queryset=None):
return self.request.user.userprofile
def form_valid(self, form):
#save cleaned post data
clean = form.cleaned_data
self.object = form.save()
return super(UserUpdate, self).form_valid(form)
现在,我希望能够更改一些属于 User 的属性和一些属于 UserProfile 的属性。
我已经尝试更改 UserProfileUpdateForm 字段变量,但它根本不起作用...
class UserProfileUpdateForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('telephone','model.user.first_name',) <- this does not work, I want to add to the form attribute 'first_name' which belongs to User, not UserProfile
您知道如何使用UpdateView 更改电话、名字、姓氏等吗?
【问题讨论】:
标签: python django django-models django-forms django-views