【发布时间】:2014-12-03 13:56:55
【问题描述】:
我创建了一个模型 (UserSettings) 来通过 OneToOneField 扩展 django 的用户模型(按照文档的建议):
class UserSettings(models.Model):
user = models.OneToOneField(User, primary_key=True)
subscribeToMails = models.BooleanField(default=True)
[...]
我希望为我的用户提供一种方法来编辑他们的一些个人资料数据,其中一些存储在 User 模型(电子邮件地址)中,其余的存储在 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')
【问题讨论】:
标签: django forms one-to-one django-class-based-views