首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UserEditView丢失了一个QuerySet吗?

UserEditView丢失了一个QuerySet吗?
EN

Stack Overflow用户
提问于 2022-03-17 17:53:20
回答 1查看 61关注 0票数 1

试图为用户创建一个编辑配置文件,而我一直得到这个错误,我应该添加或更改什么?我的模型适合UserEditView吗?

这是我的views.py (所有这些都是编辑的),可能是供应商,它与用户编辑视图不兼容,任何需要添加的东西,或者我应该更改所有导入都是针对供应商和UserEditView的

代码语言:javascript
复制
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

代码语言:javascript
复制
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 (错误弹出)

代码语言:javascript
复制
{% 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 %}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-17 18:01:48

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
path('edit_profile/', UserEditView.as_view(), name='edit_profile'),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71516952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档