【问题标题】:views.py for extended user model by onetoone to add profile informationviews.py 用于扩展用户模型,通过 onetoone 添加配置文件信息
【发布时间】:2018-12-29 12:52:53
【问题描述】:

我正在扩展User 模型以使用单对一关系添加配置文件信息。用户应该能够更改基本的用户个人资料信息。 views 添加这样的功能应该是什么?

这是我的模型

Models.py

class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
description = models.CharField(max_length=100, default='No description field')
city = models.CharField(max_length=100, default='Location not added')
phone = models.CharField(max_length=10, default='',blank= True)
image = models.ImageField(upload_to='products/profile/%Y%/%m/%d', blank=True)

def __str__(self):
    return self.user.username

这是我的表格

forms.py

class UserForm(forms.ModelForm):

class Meta():
    model = UserProfile
    fields = ['description', 'city', 'phone', 'image']

我的观点中应该包含什么?

views.py

@login_required()
def edit_profile(request):
pass

我想更新模型扩展的 UserProfile 实例,以覆盖以前的信息并更新新信息。

【问题讨论】:

    标签: django django-models django-views one-to-one django-users


    【解决方案1】:

    您需要像处理任何其他常用表单一样处理视图中的UserForm。

    这里你需要做什么:

    views.py

    def edit_profile(request):
        if request.method == 'POST':
            # don't forget to pass request.FILES since you have imageField
            form = UserForm(request.POST,
                            request.FILES,
                            instance=request.user.userprofile)
            if form.is_valid():
                form.save()
                return redirect(reverse('to_user_profile_url'))
        else:
            form = UserForm(instance=request.user.userprofile)
        context = {'form': form}
        return render(request, 'edit_profile_template', context)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 2021-09-12
      • 2017-06-18
      相关资源
      最近更新 更多