簡體   English   中英

我有這樣的錯誤 “AttributeError at /uz/account/update/ 'str' object has no attribute '_meta' ”

[英]I have a mistake like this “AttributeError at /uz/account/update/ 'str' object has no attribute '_meta' ”

單擊保存按鈕時會發生上述錯誤,但在文檔中我認為我輸入了正確的參數。 這段代碼在我的 views.py 中的位置:

class AllUserUpdate(LoginRequiredMixin, View):
def get(self, request, *args, **kwargs):
    alluser = CustomUser.objects.get(username=self.request.user.username)
    form = CustomUserForm(instance=alluser)
    context = {'form':form}
    return render(request, 'account/AllUserAccount.html', context)

def post(self, request, *args, **kwargs):
    form = CustomUserForm(self.request.POST, self.request.FILES, instance=self.request.user.username)
    if form.is_valid():
        form.save()
        messages.info(self.request, "Your are change successfully created!")
        context = {'form': form}
        return redirect('all_user_update')

這是我的模板的樣子:

<form  method="post" enctype="multipart/form-data">
            {% csrf_token %}
                <h3>Full name: {{ request.user.full_name }}</h3>
                {{ form.as_p }}
                <input type="submit" class=" btn btn-primary" value="Save">
        </form>

表格.py:

class CustomUserForm(UserCreationForm):
password1 = forms.CharField(widget=forms.PasswordInput(
    attrs={'class': 'form-control mt-2', 'name': 'password1', 'placeholder': 'enter the password...'}))
password2 = forms.CharField(widget=forms.PasswordInput(
    attrs={'class': 'form-control mt-2', 'name': 'password2', 'placeholder': 'Repeat the password...'}))

class Meta:
    model = CustomUser
    fields = ('full_name', 'email', 'user_type', 'phone', 'password1', 'password2', 'username')
    widgets = {
        'full_name': forms.TextInput(attrs={'class': 'form-control mt-2', 'name': 'full_name'}),
        'username': forms.TextInput(attrs={'class': 'form-control mt-2', 'name': 'username'}),
        'email': forms.EmailInput(attrs={'class': 'form-control mt-2', 'name': 'email'}),
        'phone': forms.TextInput(attrs={'class': 'form-control mt-2', 'name': 'phone'}),
        'user_type': forms.Select(attrs={'class': 'form-control mt-2', 'name': 'user_type'}),
    }

在此處輸入圖片說明

我希望用戶更改他們的個人頁面

在這一行:

    form = CustomUserForm(self.request.POST, self.request.FILES, instance=self.request.user.username)

您正在傳遞一個字符串 ( str ) 作為表單的instance 這不是instance參數所期望的; 它需要一個Model實例(就像您在get方法中正確傳遞它一樣,在幾行之前)。

將要更新的CustomUser作為instance傳遞,例如:

    customuser = CustomUser.objects.get(username=request.user.username)
    form = CustomUserForm(request.POST, instance=customuser)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM