我创建了一个模型(UserSettings)通过OneToOneField延长Django的用户模型(所推荐的文档):Django的相关模型和更新视图领域
class UserSettings(models.Model):
user = models.OneToOneField(User, primary_key=True)
subscribeToMails = models.BooleanField(default=True)
[...]
我希望向我的用户的方式编辑一些他们的个人资料数据,其中一些存储在用户模型(电子邮件地址)中,其余部分存储在UserSettings模型中。我该怎么做?
我想到了两种方法:在UserSettings模型中为电子邮件地址字段添加另一个OneToOneField;或者覆盖UpdateView的get_queryset()方法(但我不知道如何)。是否有最好或推荐的方式来做到这一点?到目前为止,这是我的观点看如何:
class EditUser(UpdateView):
model = UserSettings
fields = ('emailVisible', 'subscribeToMails', 'mpPopupNotif',
'mpEmailNotif', 'avatar', 'quote', 'website')
template_name = 'user/edit.html'
def get_object(self):
return UserSettings.objects.get(user_id=self.request.user)
def get_success_url(self):
return reverse_lazy('user:edit')
我不明白这应该如何工作。我在视图中将context ['email'] = self.request.user.email'传递给了get_context_data,并通过'form_class = UserEditForm'替换了'model ='。电子邮件字段确实显示为空,但 – 2014-10-09 07:18:24