首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何修复'CreateView is missing a QuerySet‘

如何修复'CreateView is missing a QuerySet‘
EN

Stack Overflow用户
提问于 2019-09-07 16:56:48
回答 2查看 2K关注 0票数 1

我正在尝试获得一个django应用程序来管理帐户和用户。管理用户可以访问django管理站点,并执行管理用户所需的任何操作。拥有用户权限的简单用户可以通过表单添加/修改用户,但不能访问django管理站点。

我正在尝试为简单用户添加一个CreateView来添加用户,但是我一直收到这个错误:'CreateView is missing a QuerySet‘

是不是因为我扩展了AbstractBase用户?谁能给我解释一下这些查询集是什么,以及如何修复我的代码?

谢谢你

代码:`

代码语言:javascript
运行
AI代码解释
复制
#admin.py
class UserCreationForm(forms.ModelForm):
    password = forms.CharField(label='Mot de passe', widget=forms.PasswordInput)
    password_confirm = forms.CharField(label='Confirmation du mot de passe', widget=forms.PasswordInput)

    class Meta:
        model = UserProfile
        fields = ('first_name', 'last_name', 'email', 'perm_on_user', 'perm_on_news', 'is_admin',)

    def clean_password_confirm(self):
        # Check that the two password entries match
        password = self.cleaned_data.get("password")
        password_confirm = self.cleaned_data.get("password_confirm")
        if password and password_confirm and password != password_confirm:
            raise forms.ValidationError("Les mots de passes ne correcpondent pas")
        return password

    def save(self, commit=True):
        # Save the provided password in hashed format
        user = super().save(commit=False)
        user.set_password(self.cleaned_data["password"])
        if commit:
            user.save()
        return user

class UserModificationForm(forms.ModelForm):

    password = forms.CharField(label='Mot de passe', widget=forms.PasswordInput)
    password_confirm = forms.CharField(label='Confirmation du mot de passe', widget=forms.PasswordInput)

    class Meta:
        model = UserProfile
        fields = ('first_name', 'last_name', 'email', 'perm_on_user', 'perm_on_news', 'is_admin',)

    def clean_password_confirm(self):
        # Check that the two password entries match
        password = self.cleaned_data.get("password")
        password_confirm = self.cleaned_data.get("password_confirm")
        if password and password_confirm and password != password_confirm:
            raise forms.ValidationError("Les mots de passes ne correcpondent pas")
        return password

    def save(self, commit=True):
        # Save the provided password in hashed format
        user = super().save(commit=False)
        user.set_password(self.cleaned_data["password"])
        if commit:
            user.save()
        return user


class UserAdmin(BaseUserAdmin):
    form = UserModificationForm
    add_form = UserCreationForm

    list_display = ('username', 'first_name', 'last_name', 'email', 'perm_on_user', 'perm_on_news', 'is_admin',)
    list_filter = ('perm_on_user', 'perm_on_news', 'is_admin')
    fieldsets = (
        (None, {'fields': (
        'username', 'password', 'password_confirm', 'first_name', 'last_name', 'email', 'perm_on_user', 'perm_on_news',
        'is_admin',)}),
    )
    # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
    # overrides get_fieldsets to use this attribute when creating a user.
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'first_name', 'last_name', 'email', 'password', 'password_confirm', 'perm_on_user',
                       'perm_on_news', 'is_admin'),
        }),
    )
    search_fields = ('username',)
    ordering = ()
    filter_horizontal = ()


admin.site.register(UserProfile, UserAdmin)
admin.site.unregister(Group)

#model.py
class UserProfileManager(BaseUserManager):

    def create_user(self, password=None, **kwargs):
        user = self.model(**kwargs)
        user.set_password(password)
        user.save(using=self.db)
        return user

    def create_superuser(self, password=None, **kwargs):
        user = self.create_user(password=password)
        user.is_admin = True
        user.save(using=self.db)
        return user

class UserProfile(AbstractBaseUser):
    __MAX_LENGTH = 100
    username = models.CharField(max_length=__MAX_LENGTH, verbose_name="Nom d'utilisateur", unique=True)
    first_name = models.CharField(max_length=__MAX_LENGTH, verbose_name="Prénom", default="")
    last_name = models.CharField(max_length=__MAX_LENGTH, verbose_name="Nom", default="")
    email = models.EmailField(max_length=__MAX_LENGTH, verbose_name="Adresse e-mail", default="")
    perm_on_user = models.BooleanField(verbose_name="Gestion des utilisateurs", default=False)
    perm_on_news = models.BooleanField(verbose_name="Gestion de la newsletter", default=False)
    is_admin = models.BooleanField(verbose_name="Administrateur", default=False)

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['first_name', 'last_name', 'email', 'perm_on_user', 'perm_on_news', 'is_admin', ]

    object = UserProfileManager()

    class Meta:
        verbose_name = "Utilisateur"

    def has_perm(self, perm, obj=None):
        return True

    def has_module_perms(self, app_label):
        return True

    @property
    def is_staff(self):
        return self.is_admin

#view.py
class CreateUserView(CreateView):
    model = UserProfile
    fields = ['first_name', 'last_name', 'email', 'perm_on_user', 'perm_on_news', 'is_admin', ]

`编辑:

这里有更多的信息

代码语言:javascript
运行
AI代码解释
复制
Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/accounts/new/

Django Version: 2.2.5
Python Version: 3.7.4
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'accounts']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/usr/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/usr/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/usr/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/lib/python3.7/site-packages/django/views/generic/base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)

File "/usr/lib/python3.7/site-packages/django/views/generic/base.py" in dispatch
  97.         return handler(request, *args, **kwargs)

File "/usr/lib/python3.7/site-packages/django/views/generic/edit.py" in get
  168.         return super().get(request, *args, **kwargs)

File "/usr/lib/python3.7/site-packages/django/views/generic/edit.py" in get
  133.         return self.render_to_response(self.get_context_data())

File "/usr/lib/python3.7/site-packages/django/views/generic/edit.py" in get_context_data
  66.             kwargs['form'] = self.get_form()

File "/usr/lib/python3.7/site-packages/django/views/generic/edit.py" in get_form
  32.             form_class = self.get_form_class()

File "/usr/lib/python3.7/site-packages/django/views/generic/edit.py" in get_form_class
  93.                 model = self.get_queryset().model

File "/usr/lib/python3.7/site-packages/django/views/generic/detail.py" in get_queryset
  73.                         'cls': self.__class__.__name__

Exception Type: ImproperlyConfigured at /accounts/new/
Exception Value: CreateView is missing a QuerySet. Define CreateView.model, CreateView.queryset, or override CreateView.get_queryset().

`

`帐户位于/ ImproperlyConfigured /new/

代码语言:javascript
运行
AI代码解释
复制
CreateView is missing a QuerySet. Define CreateView.model, CreateView.queryset, or override CreateView.get_queryset().

Request Method:     GET
Request URL:    http://127.0.0.1:8000/accounts/new/
Django Version:     2.2.5
Exception Type:     ImproperlyConfigured
Exception Value:    

CreateView is missing a QuerySet. Define CreateView.model, CreateView.queryset, or override CreateView.get_queryset().

Exception Location:     /usr/lib/python3.7/site-packages/django/views/generic/detail.py in get_queryset, line 73
Python Executable:  /usr/bin/python3.7
Python Version:     3.7.4
Python Path:    

['/home/antoine/PycharmProjects/AsepWebApp',
 '/home/antoine/PycharmProjects/AsepWebApp',
 '/home/antoine/PyCharm/helpers/pycharm_display',
 '/usr/lib/python37.zip',
 '/usr/lib/python3.7',
 '/usr/lib/python3.7/lib-dynload',
 '/usr/lib/python3.7/site-packages',
 '/home/antoine/PyCharm/helpers/pycharm_matplotlib_backend']

Server time:    sam, 7 Sep 2019 16:59:20 +0000

`

编辑2:

这里是urls.py

`

代码语言:javascript
运行
AI代码解释
复制
#accounts/urls.py
urlpatterns = [
    path('new/', views.CreateView.as_view(), name="accounts/new/"),
]

#base urls.py file
urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('accounts.urls'))
]

`

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-07 17:33:32

您必须在urls.py中使用扩展的CreateUserView,而不是导入的CreateView,如下所示:

代码语言:javascript
运行
AI代码解释
复制
urlpatterns = [
    path('new/', views.CreateUserView.as_view(), name="accounts/new/"),
]
票数 2
EN

Stack Overflow用户

发布于 2019-09-07 17:12:32

您还没有显示您的CreateUserView,但是您似乎在那里使用了基本urls,而不是您的urls。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57835751

复制
相关文章
批量修复Jshint检测出的'Missing Semicolons'问题
在编写 js 代码时,要不要在行尾添加分号,一直众说纷纭,各有道理。于是,有的人写分号,有的人不写分号,有的人混着用。
雪梦科技
2020/05/10
1.8K0
Django Model 如何返回空的 QuerySet
>>> from django.contrib.auth.models import User >>> User.objects.none() <QuerySet []> 以上就是本文的全部内容,如果觉得还不错的话。
AlwaysBeta
2022/05/05
7700
Django内置的通用类视图及实例
表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须). 属性:
菲宇
2019/06/13
3K0
Django内置的通用类视图及实例
Django2.0中文(通用视图)
1、通用视图 urls.py: from django.views.generic import TemplateView path(r'about/',TemplateView.as_view(template_name="about.html")), 2、通用视图 about.html xx/templates/about.html
用户5760343
2022/05/14
7390
Django内置的通用类视图CBV及示例
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
菲宇
2019/10/22
3.3K0
Django内置的通用类视图CBV及示例
Django(19)QuerySet API[通俗易懂]
我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作。其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager这个类是一个“空壳”的类,他本身是没有任何的属性和方法的。他的方法全部都是通过Python动态添加的方式,从QuerySet类中拷贝过来的。示例图如下:
全栈程序员站长
2022/09/16
7530
Django(19)QuerySet API[通俗易懂]
PrestaShop 网站漏洞修复如何修复
PrestaShop网站的漏洞越来越多,该网站系统是很多外贸网站在使用的一个开源系统,从之前的1.0初始版本到现在的1.7版本,经历了多次的升级,系统使用的人也越来越多,国内使用该系统的外贸公司也很多,PrestaShop扩展性较高,模板也多,多种货币自由切换,并支持信用卡以及paypal支付,是外贸网站的首选。就在最近几天,PrestaShop被爆出有远程代码注入漏洞,该漏洞影响范围较光,危害较大,可以上传webshell到网站根目录下。
网站安全专家
2019/07/24
4.2K0
Django 2.1.7 查询集 QuerySet
上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。
Devops海洋的渔夫
2019/06/15
1.2K0
PrestaShop 网站漏洞修复如何修复
PrestaShop网站的漏洞越来越多,该网站系统是很多外贸网站在使用的一个开源系统,从之前的1.0初始版本到现在的1.7版本,经历了多次的升级,系统使用的人也越来越多,国内使用该系统的外贸公司也很多,PrestaShop扩展性较高,模板也多,多种货币自由切换,并支持信用卡以及paypal支付,是外贸网站的首选。就在最近几天,PrestaShop被爆出有远程代码注入漏洞,该漏洞影响范围较光,危害较大,可以上传webshell到网站根目录下。
技术分享达人
2019/01/01
4.1K0
django queryset 合并
1. 通过自带的方法: a1 = User.objects.filter(id__gt=8) a2 = User.objects.filter(id__lt=4) a3 = a1 | a2 注:这种方式合并的结构还是一个queryset,相当于a3把a1和a2的条件合并了,推荐,因为可以用order_by等函数了 只能合并同种model对象的数据 2. 用python的chain合并 from itertools import chain a1 = User.objects.filter(id__
kirin
2020/11/05
7910
【踩坑】修复dpkg: warning: files list file for package ‘xxxx‘ missing; assuming pac
虽然影响不大,但看着难受,可以尝试使用以下脚本进行自动修复: #!/bin/bash set -e # Clean out /var/cache/apt/archives sudo apt-get clean # Fill it with all the .debs we need sudo apt-get --reinstall -dy install $(dpkg --get-selections | grep '[[:space:]]install' | cut -f1) DIR=$(mktemp
小锋学长生活大爆炸
2023/04/01
1.4K0
【踩坑】修复dpkg: warning: files list file for package ‘xxxx‘ missing; assuming pac
Django之QuerySet详解
在内部,创建、过滤、切片和传递一个QuerySet不会真实操作数据库,在你对查询集提交之前,不会发生任何实际的数据库操作。可以使用下列方法对QuerySet提交查询操作:
菲宇
2022/12/21
2.4K0
Django源码学习-8-ListView&DetailView通用视图
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/08/06
1.5K0
Google Drive, Onedrive, Dropbox green check marks missing; 修复 google 硬盘,同步符号错误
最近使用google 硬盘的时候,Windows平台总是出现安装后文件夹不能显示同步符号,而mac平台就无上述错误;
西湖醋鱼
2021/12/28
7000
Google Drive, Onedrive, Dropbox green check marks missing; 修复 google 硬盘,同步符号错误
django RawQuerySet 与QuerySet
使用orm查询,得到的结果类型是QuerySet,这种类型drf可以进行下一步处理, 使用原生sql查询,例如
kirin
2020/11/23
1.5K0
django合并多个queryset
这几天正在做一个关于权限控制的django框架,今天上午遇见了一个bug,因为我的需求是,每个人拥有的权限不同,所以你所能够访问的菜单也不同,那么这时候不同的人员访问不同的菜单是不一样的。
kirin
2020/11/23
2.8K0
Django中的QuerySet
  查询集,类似一个列表,包含了满足查询条件的所有项。QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作。只有你查询的时候才真正的操作数据库。意味着QuerySet是惰性执行的----即创建查询集不会带来任何的数据库访问,直到查询集需要求值的时候,Django才会真正运行这个查询。
forxtz
2020/10/10
1.4K0
Django-models & QuerySet API
IntegerField  – 整型 BooleanField  – 布尔值类型 NullBooleanField  – 可以为空的布尔值 CharField     – 字符串类型 必须提供max_length参数,字符长度 TextField      – 文本类型 EmailField     – 一个带有检查 Email 合法性的 CharField GenericIPAddressField      IP地址 URLField        URL类型 SlugField  – 字符串类型,只包含字母,数字,下划线或连字符 CommaSeparatedIntegerField   – 字符串类型,格式必须为逗号分割的数字 UUIDField   uuid类型 DateTimeField     – 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] DateField   – 日期格式 YYYY-MM-DD TimeField   – 时间格式 HH:MM[:ss[.uuuuuu]] FloatField(Field)    – 浮点型 DecimalField(Field)   – 10进制小数 BinaryField(Field)    – 二进制类型
kirin
2020/07/23
1.4K0
Django学习笔记:QuerySet API
我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作。其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager这个类是一个“空壳”的类,他本身是没有任何的属性和方法的。他的方法全部都是通过Python动态添加的方式,从QuerySet类中拷贝过来的。
SingYi
2022/07/14
6400
Django学习笔记:QuerySet API
The Missing Link
静态链接还是动态链接?在这一点上,FreeSWITCH是怎么做的?接下来我想跟大家讨论一下这个问题。
杜金房
2020/12/21
1.6K0

相似问题

如何修复[Root element is missing]?

143

如何修复"Missing module docstringpylint(missing-module-docstring)“

22.2K

如何修复Django中的Createview

10

django.core.exceptions.ImproperlyConfigured: CreateView缺少QuerySet

32

在CreateView中使用get_queryset过滤模型

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文