首页 > 解决方案 > 使用 Django 使用 UpdateView 更新用户配置文件

问题描述

我用个人资料扩展了用户。注册和登录工作正常,但我在实现 UserPofile(用户 + 配置文件模型)时遇到问题。表单已呈现,但未存储。我现在不知道在哪里看。有什么问题?如何调试这个?

意见:

class UserSettings(UpdateView):
    template_name = 'users/settings.html'
    context_object_name = 'user'
    model = UserProfile
    form_class = ProfileUpdateForm


    def get_success_url(self):
        return reverse('users:user-settings', kwargs={'pk': self.get_object().id})


    def get_context_data(self, **kwargs):
        context = super(UserSettings, self).get_context_data(**kwargs)
        context['user_form'] = UserUpdateForm(instance=self.object.user)
        return context

模型:

from django.contrib.auth.models import User
from django.db.models.signals import post_save


class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    picture = models.ImageField(default='users/default_user.png', upload_to='users', blank=True, null=True)

def post_user_created_signal(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.create(user=instance)


post_save.connect(post_user_created_signal, sender=User)

形式:

class UserUpdateForm(UserChangeForm):
    class Meta:
        model = User
        fields = ['first_name', 'last_name']


class ProfileUpdateForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = [
            'picture'
            ]

标签: djangodjango-viewsdjango-forms

解决方案


推荐阅读