Я добавляю проверку в form.py, чтобы исключить ту же запись во время обновления, поэтому я проверяю, имя пользователя уже существует или нет, но self.instance.pk
получает Нет.
Я знаю, что есть и другой способ сделать это, но я хочу знать, почему self.instance.pk не работал, я буду использовать этот подход и для других форм, поэтому мне нужно исправить это с помощью self.instance.pk
вот мой код
, поэтому не могли бы вы просмотреть код, что мне не хватает и почему не работает self.instance.pk.
forms.py
from django import forms
from .models import CustomUser
class UserForm(forms.ModelForm):
password = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
class Meta:
model = CustomUser
fields = '__all__'
exclude = ["is_admin", "is_verified", "last_login"]
def clean_username(self):
username = self.cleaned_data.get("username")
print(self.instance.pk)
user_obj = CustomUser.objects.exclude(pk=self.instance.pk).get(username=username)
if user_obj:
raise forms.ValidationError("username already exist")
return username
views.py
def edit_profile(request):
context = {
"form": UserForm()
}
user_obj = request.user
form = UserForm(instance=user_obj)
context["form"] = form
if request.method == "POST":
form = UserForm(request.POST)
if form.is_valid():
form_obj = form.save()
return render(request, "account/profile.html", context)