我試圖用基於類的UpdateView更新Django用戶模型,該模型會自動與當前用戶呈現,但得到的是需要pk或slug的錯誤。表單工作並使用適當的當前用戶上下文呈現,但在嘗試提交更改時拋出錯誤。下面是我使用的觀點:我需要重寫的更新視圖的get_object()
方法,並不需要覆蓋form_valid在基於類的UpdateView中更新Django中的用戶模型
class UserUpdateView(UpdateView):
form_class = UserForm
model = User
template_name = 'members/user_update.html'
def get(self, request, **kwargs):
self.object = User.objects.get(username=self.request.user)
form_class = self.get_form_class()
form = self.get_form(form_class)
context = self.get_context_data(object=self.object, form=form)
return self.render_to_response(context)
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.user = self.request.user
self.object.save()
return HttpResponseRedirect(self.get_success_url())
其實self.request.user是一個用戶實例。 – nemith 2012-01-29 05:53:55