我試圖爲我的django網站創建編輯帳戶頁面。我試圖用稍微修改我的註冊表格,因爲信息基本上都是一樣的。我遇到的問題是當用戶點擊更新時,django甚至會檢查唯一的用戶名,如果他們的用戶名保持不變,則返回以下錯誤。如果他們不改變它,它應該檢查該字段值是否等於登錄的用戶名並跳過它。Django用戶帳戶更新 - 忽略「此用戶名已存在的用戶」
「用戶使用該用戶名已經存在」
到目前爲止,我已經覆蓋了乾淨的方法,通過request.user傳遞給表單,並檢查登錄的用戶名是一樣的字段用戶名。查看其他堆棧溢出問題,似乎人們只是刪除self._errors ['用戶名'],但我得到一個關鍵的錯誤。 self._errors甚至沒有實例化。我也嘗試設置「唯一」屬性爲false,但它仍然給我錯誤。我迷路了,所以任何幫助將不勝感激。
我的窗體類:
class updateAccount(forms.ModelForm):
username = forms.CharField(required=True, widget=forms.TextInput(attrs={'placeholder': 'Username'}))
email = forms.EmailField(required=True, widget=forms.TextInput(attrs={'placeholder': 'Email Address'}))
first_name = forms.CharField(max_length=100, required=True, widget=forms.TextInput(attrs={'placeholder': 'First Name'}))
last_name = forms.CharField(max_length=100, required=True, widget=forms.TextInput(attrs={'placeholder': 'Last Name'}))
class Meta:
model = User
fields = ('username','email','first_name','last_name')
exclude = ('password',)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop("request")
super(updateAccount, self).__init__(*args, **kwargs)
def clean(self):
if self.request.user.username == self.cleaned_data.get('username'):
self.fields['username'].required = False
super(updateAccount, self).clean()
return self.cleaned_data
def save(self, commit=True):
user = super(updateAccount, self).save(commit=False)
if commit:
user.save()
return user
我也試過。我剛剛複製並粘貼了您的代碼,但仍然顯示錯誤「用戶使用此用戶名已存在」。 – user2508385
@ user2508385這很奇怪,我使用相同的代碼,我沒有得到這個錯誤..你使用什麼django版本? – mariodev
我明白了,我沒有在post.py中設置我的views.py中的實例。 – user2508385