Django - UserEditView 缺少 QuerySet?

Django - UserEditView is missing a QuerySet?

正在尝试为用户创建编辑配置文件,但我一直收到此错误我应该添加或更改什么?我的模型适合 UserEditView

这是我的views.py(全部编辑) 也许供应商与用户编辑视图不兼容 还需要添加其他内容还是我应该更改一些内容 所有导入都是针对供应商和 UserEditView

from tkinter import Entry
from django.contrib.auth.models import User
from xml.dom.minidom import Entity
from django.contrib.auth import login
from django.contrib.auth.decorators import login_required
from django.urls import reverse_lazy
from django.views import generic
from django.contrib.auth.forms import UserCreationForm , UserChangeForm
from django.utils.text import slugify
from django.shortcuts import render, redirect
from .models import Profile, Vendor
from products.models import Product
from .forms import ProductForm
# Create your views here.
def become_vendor(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)

        if form.is_valid():
            user = form.save()
            login(request, user)
            vendor = Vendor.objects.create(name=user.username, created_by=user)

            return redirect('home')
    else:
        form = UserCreationForm()   

    return render(request, 'vendor/become_vendor.html', {'form': form})




@login_required
def vendor_admin(request):
   context = {
       'user':request.user

   }
   vendor = request.user.vendor
   products = vendor.products.all()
   return render(request,'vendor/vendor_admin.html',{'vendor': vendor , 'products': products ,'context':context})

@login_required
def add_house(request):
    if request.method == 'POST':
    
     form = ProductForm (request.POST, request.FILES)

     if form.is_valid():
       product = form.save(commit=False)
       product.vendor = request.user.vendor
       product.slug = slugify(product.عنوان)
       product.save()
       return redirect('vendor_admin')
    else:
        form = ProductForm()  
        return render(request,'vendor/add_house.html',{'form': form})
class UserEditView(generic.UpdateView):
    models = User
    form_class = UserChangeForm
    template_name = 'vendor/edit_profile.html'
    seccess_url = reverse_lazy('vendor_admin')
def get_object(self):
    return self.request.user

urls.py

from django.urls import path
from .import views
from .views import UserEditView
from django.contrib import admin  
from django.contrib.auth import views as auth_views

urlpattern =[
    path('signup/', views.become_vendor, name='become_vendor'),
    path('profile/', views.vendor_admin, name='vendor_admin'),
    path("logout/", auth_views.LogoutView.as_view(), name="logout"),
    path('login/', auth_views.LoginView.as_view(template_name='vendor/login.html'), name='login'),
    path('edit_profile/', UserEditView.as_view(template_name='vendor/edit_profile.html'), name='edit_profile'),
]

edit_profile.html (出现错误的地方)

{% extends "base.html"%}
{% load static %}
{% block content %}
<title>title</title>
<div class="section pt-9 pb-9">
    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <div class="section-title">
                    <div class="wrap-title">
                        <h3 class="title">
                            <span class="first-word"></span>
                        </h3> 
<br>

<form method="post" >  
    {% csrf_token %}  
    <table>  
       {{ form.as_p }}  
        
    </table> 
    <button class='button'>Update</button>    
</form>  
</div>  
<hr>
{% endblock  content %}

我认为您没有正确声明您的模型:

class UserEditView(generic.UpdateView):
    # models = UserChangeForm #That has no sense.
    model = User #The name of your model (Probably the default one: User).
    form_class = UserChangeForm
    template_name = 'vendor/edit_profile.html'
    success_url = reverse_lazy('vendor_admin')
    def get_object(self):
        return self.request.user

其他。您已两次声明您的模板名称。根据你的 views.py 你可以删除 urls.py 上的 template_name:

path('edit_profile/', UserEditView.as_view(), name='edit_profile'),