我有两个模型,我将允许用户分别编辑,一个叫做用户(Django default auth),另一个叫做UserProfile
models.py(用户配置文件)
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.ImageField(upload_to='avatar', default='avatar/default.png')
header = models.ImageField(upload_to='header', default='header/default.png')
bio = models.TextField(max_length=140, blank=True)
website = models.URLField(max_length=200, blank=True)
location = models.CharField(max_length=30, blank=True)
date_birth = models.DateField(null=True, blank=True)
视图.py
class UserUpdateView(generic.UpdateView):
"""
This view is for editing only the User model. /edit/
"""
model = User
slug_field = 'username'
form_class = UserForm
template_name = 'user/user_edit.html'
首先,使用^{} mixin,这样只有登录的用户才能访问视图
然后,重写
get_object
方法,并返回要编辑的模型实例您不再需要URL中的用户名,因此可以删除
slug_field = 'username'
如果您有一个类似的视图来编辑用户配置文件,那么您将返回
self.request.user.userprofile
相关问题 更多 >
编程相关推荐