UNIQUE constraint failed username error while changing user details

情到浓时终转凉″ 提交于 2019-12-23 02:04:18

问题


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

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']

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)
        ...

But form.save gives UNIQUE constraint failed: common_hacker.username error. What can be problem here?


回答1:


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

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



来源:https://stackoverflow.com/questions/34845303/unique-constraint-failed-username-error-while-changing-user-details

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!