更改用户详细信息时,UNIQUE约束失败的用户名错误 [英] UNIQUE constraint failed username error while changing user details

查看:67
本文介绍了更改用户详细信息时,UNIQUE约束失败的用户名错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过扩展 AbstractUser 类具有自定义用户模型。我想制作表格来更改用户的全名和网站字段。
我的用户:

I have custom user model by extending AbstractUser class. I want to make form to change user's fullname and website field. My user:

class Hacker(AbstractUser):
    name = models.CharField(max_length=255)
    team = models.ForeignKey(Team, on_delete=models.CASCADE, blank=True, null=True)
    description = models.CharField(max_length=255, blank=True, null=True)
    website = models.URLField(max_length=200, blank=True, null=True)

    def __str__(self):
        if self.name:
            return self.name
        else:
            return self.username

然后使用form.py:

And forms.py:

class ProfileForm(forms.ModelForm):
    """
    Edit profile form
    """
    name = forms.CharField(label=_("Name"),
                           widget=forms.TextInput(attrs={'placeholder': _('Name')}))
    description = forms.CharField(label=_("Description,Position"), required=False,
                                  widget=forms.TextInput(attrs={'placeholder': _('Description, Position')}))
    website = forms.URLField(label=_("Website"), required=False,
                             widget=forms.TextInput(attrs={'placeholder': _('Website URL')}))

    class Meta:
        model = get_user_model()
        fields = ['name', 'description', 'website']

在页面中,我使用{{field}}添加输入并在POST部分视图中:

In page I use {{ field }} to add inputs and in POST part of views:

form = ProfileForm(request.POST)
    if form.is_valid():
        form.save(commit=True)
        ...

但是 form.save 给出 UNIQUE约束失败:common_hacker.username 错误。

推荐答案

添加 instance = request.user 创建表单固定问题时:

Adding instance=request.user when creating form fixed problem:

form = ProfileForm(request.POST,instance = request.user)

这篇关于更改用户详细信息时,UNIQUE约束失败的用户名错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆