首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

除非满足条件,否则如何不在Django管理中显示删除确认

在Django管理中,默认情况下,删除操作会在删除页面上显示一个删除确认框。如果希望在某些条件下不显示删除确认框,可以通过自定义Django管理中的模型Admin类来实现。

首先,需要在应用的admin.py文件中导入相关的模块:

代码语言:txt
复制
from django.contrib import admin
from django.contrib.admin import actions
from django.contrib.admin.utils import unquote
from django.contrib.admin.views.main import ChangeList

然后,创建一个自定义的ChangeList类,继承自Django的ChangeList类,并重写其中的get_actions方法:

代码语言:txt
复制
class CustomChangeList(ChangeList):
    def get_actions(self, request):
        actions = super().get_actions(request)
        if not self.model_admin.has_delete_permission(request):
            actions.pop('delete_selected', None)
        return actions

接下来,创建一个自定义的ModelAdmin类,继承自Django的ModelAdmin类,并重写其中的get_changelist方法:

代码语言:txt
复制
class CustomModelAdmin(admin.ModelAdmin):
    def get_changelist(self, request, **kwargs):
        return CustomChangeList

最后,在admin.py文件中注册你的模型,并将自定义的ModelAdmin类作为参数传递给admin.site.register方法:

代码语言:txt
复制
from .models import YourModel

admin.site.register(YourModel, CustomModelAdmin)

通过以上步骤,你可以实现在满足条件时不在Django管理中显示删除确认框。请注意,这只是一种实现方式,你可以根据具体需求进行调整和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django 用户认证系统使用总结

如果默认的认证无法满足项目,Django提供了对认证系统的扩展与定制。 Django身份验证同时提供身份验证和授权,通常称为身份验证系统,因为这些特性有些耦合。...admin应用,也可以在认证系统管理页面修改用户密码 修改密码,将注销对应用户的所有会话。...用户认证 authenticate(request=None, **credentials) 使用authenticate()来确认一系列认证。...='john', password='secret',is_delete=1) 当然,除了是否删除,是否禁用等字段,其它字段一般不推荐这么做,可以在验证用户账号密码前进行其它前置条件的验证 注意:默认的...,django会优先验证我们显示提供的参数,最后再验证is_active是否未1,如果为1,则返回None 权限和认证(Permissions and Authorization) 略 Web请求的认证

1.8K10

Django DeleteView without confirmation template, but with CSRF attack

)有点特别蛋疼的,他理想的流程是这样:点击删除 -> 跳转到确认页面 -> 点击确认删除 -> 删除对象 -> 跳转到success_url。...所以,我理想删除逻辑应该是这样的:点击删除 -> Javascript弹出确认框 -> 用户点击确认 -> Javascript生成一个表单 -> 提交 -> 跳转到success_url。...所以,我这个逻辑里面是不需要GET请求的,也就是说不需要写“确认删除”的模板,所以我上网上搜了一下如何才能不要这个模板: http://stackoverflow.com/questions/17475324...正常开发,ajax请求里会存在很多DELETE方法,所以DELETE一定要检查CSRF TOKEN,否则很容易出现漏洞。 那么回到Django。既然上述做法会引发CSRF漏洞,那么我们怎么办?...这个函数的意思就是:根据子类定义过的方法名确定允许哪些方法。 比如,Django提供的BaseUpdateView类定义了两个方法get和post: ?

98610
  • 【Python全栈100天学习笔记】Day41 Django深入理解框架

    字段属性primary_key用于设置主键,max_length用来设置字段的最大长度,db_column用来设置数据库与字段对应的列,verbose_name则设置了Django后台管理系统该字段显示的名称...虽然实际应用,这个后台可能并不能满足我们的需求,但是在学习Django框架时,我们暂时可以利用Django自带的后台管理系统来管理我们的模型,同时也可以了解一个项目的后台管理系统到底需要哪些功能。...可能大家已经注意到了,刚才在后台查看部门信息的时候,显示的部门信息并不直观,为此我们再修改admin.py文件,通过注册模型管理类,可以在后台管理系统更好的管理模型。...使用ORM完成模型的CRUD操作 在了解了Django提供的模型管理平台之后,我们来看看如何从代码层面完成对模型的CRUD(Create / Read / Update / Delete)操作。...on_delete:外键关联的对象被删除时对应的动作,可取的值包括django.db.models定义的: CASCADE:级联删除

    2.3K30

    Django的设计哲学

    Django 的诞生基于非常朴素的需求,2003 年的秋天,两位主创人员Adrian Holovaty和Simon Willison)为了快速开发,抛弃了 PHP 转而使用 Python,来满足新闻网站的快速迭代开发需求...除非绝对必要,否则框架的各个层次都不应“相互了解”。例如,模板系统对Web请求一无所知,数据库层对数据显示层一无所知,而视图系统不在乎程序员使用哪个模板系统。...5、显式胜于隐式 这是 Python 的核心原则 PEP 20,这意味着 Django 不应做太多“魔术”功能“魔术”功能,除非有充分的理由。...5、可以轻松编辑 模板系统的设计不应使模板必须在所见即所得的编辑器(例如Dreamweaver)很好地显示。这样的限制太严酷了,不会让语法看起来像现在一样好。...任何空格,只要模板标记没有的,都应该显示它。 7、不要发明一种编程语言 目的不是发明一种编程语言。目的是提供足够的编程式功能,例如分支和循环,这对于做出与演示相关的决定至关重要。

    2.2K10

    django 1.8 官方文档翻译: 2-2-1 执行查询

    要创建这样一个子集,需要精炼上面的结果集,增加一些过滤器作为条件。两个最普遍的途径是: filter(**kwargs) 返回一个包含对象的集合,它们满足参数中所给的条件。...exclude(**kwargs) 返回一个包含对象的集合,它们不满足参数中所给的条件。 查询参数(上面函数定义的**kwargs)需要满足特定的格式,字段检索一节中会提到。...你可以一直添加过滤器,在这个过程Django 不会执行任何数据库查询,除非 QuerySet 被执行....针对这两种情况,Django 用一种很方便的方式来使用 filter() 和 exclude()。对于包含在同一个 filter() 的筛选条件,查询集要同时满足所有筛选条件。...但仅由一个 model 类并不能知道其他 model 类是如何与它关联的,除非是其他 model 也被载入,那么这是如何办到的? 答案就在于 INSTALLED_APPS 设置

    4.4K20

    Django——model基础

    如果你没有指定任何一个字段的primary_key=True, Django 就会自动添加一个IntegerField字段做为主键,所以除非你想覆盖默认的主键行为, 否则没必要设置任何一个字段的primary_key...,是存储在数据库的值;第二个元素是在管理界面或 ModelChoiceField 中用作显示的内容。...1 2 >>> new_list = [obj1, obj2, obj3] >>> e.related_set = new_list 如果外键关系满足null=True,关联管理器会在添加new_list...否则, new_list的对象会在已存在的关联的基础上被添加。   查询表记录 查询相关API ?...这是一种保护机制,是为了避免意外地调用 Entry.objects.delete() 方法导致 所有的 记录被误删除。如果你确认删除所有的对象,那么你必须显式地调用: ?

    1.1K100

    Admin站点

    AppConfig.verbose_name 属性用于设置该应用的直观可读的名字,此名字在Django提供的Admin管理站点中会显示, 注册模型类 登录后台管理后,默认没有我们创建的应用定义的模型类...在修改页点击“删除”可以删除一项。 ? 删除:在列表页勾选想要删除的复选框,可以删除多项。 ? 点击执行后进入确认页面,删除后回来列表页面。 ?...定义与使用Admin管理Django提供的Admin站点的展示效果可以通过自定义ModelAdmin类来进行控制。...操作选项的位置 顶部显示的属性,设置为True在顶部显示,设置为False不在顶部显示,默认为True。...actions_on_top=True 底部显示的属性,设置为True在底部显示,设置为False不在底部显示,默认为False。

    2.1K20

    2018年10月8日django查看版本命令,python2&3print区别,iterable报错,SSH,pycharmubuntu颜色设置

    查看Django版本的命令: 1. 在终端输入: python -m django –-version 2....一般这个错误的原因是django得到查询对象用的方法是get方法,改成filter方法就可以了,因为get方法只会得到一个对象,而filter方法会根据查询的条件如果有多个对象就返回多个对象。...利用 SSH 协议可以有效防止远程管理过程的信息泄露问题。通过使用SSH,你可以把所有传输的数据进行加密,而且也能够防止DNS欺骗和IP欺骗。...: 打开pycharm编辑器,file > settings > Editor > Color Scheme > python (指定的语言)> (选择指定的代码) pycharm如何设置背景的颜色:...—————————————————————————————————————————————————————— django定义路由信息的时候末尾一定要加上/,否则有可能找不到页面!血的教训!

    72230

    有一个不让你下班后继续工作的老板是什么体验?Power BI限制IP地址登录

    书接上文: 作为管理员,如何监控各部门使用Power BI报表的情况 我们讲到可以在Azure Active Directory随时监控团队伙伴的登录时间、登录IP等信息,以便查看哪些小伙伴下了班回家之后还是在继续工作呢...强烈建议起名字要有一定的实际意义,否则后续维护很麻烦。同时注意它本身的提示,最开始的时候先用测试账号进行试验。...上图右边应当选exclude,意思是除了这些受信任的地址外,全都block阻止,一定要确认好逻辑,不要选错了。...在这里面选择账号和登录IP、登录国家和平台后,点击what if按钮,就会显示是否受到了条件的阻碍。比如我们设定IP地址范围如下: ?...随便填写一个IP地址,只要这个IP不在之前信任的IP范围内,就会显示受到了阻止: ? 而如果IP地址在受信任范围内,就显示No policies,代表不受限制: ?

    94631

    Django模型(数据库)及Django Query常用方法

    我们会看到,Django生成了一系列的表,也生成了我们新建的people_person这个表,那么如何使用这个表呢?...使用 Django 提供的 QuerySet API Django提供了丰富的API, 下面演示如何使用它。...,查询结果显示,这里并没有显示出与Tom的相关信息,如果用户多了就无法知道查询出来的到底是谁,查询结果是否正确,我们重新修改一下 people/models.py...(name__iregex="^abc") # 正则表达式不区分大小写 filter是找出满足条件的,当然也有排除符合某条件的 Person.objects.exclude(name__contains...和上面类似,得到满足条件的结果,然后 delete 就可以(危险操作,正式场合操作务必谨慎),比如: Person.objects.filter(name__contains="abc").delete

    2.6K40

    Django】 开发:数据库操作和后台管理

    (条件) 作用: 返回满足条件的唯一一条数据 说明: 该方法只能返回一条数据 查询结果多余一条数据则抛出,Model.MultipleObjectsReturned 异常 查询结果如果没有数据则抛出...删除记录是指删除数据库的一条或多条记录 删除单个MyModel对象或删除一个查询结果集(QuerySet)的全部对象都是调用 delete()方法 删除单个对象 步骤 查找查询结果对应的一个数据对象...print(删除失败) 删除查询结果集 步骤 查找查询结果集中满足条件的全部 QuerySet 查询集合对象 调用查询集合对象的 delete () 方法实现删除 示例: # 删除全部作者,年龄大于65.../127.0.0.1:8000/admin/ 注册自定义模型类 若要自己定义的模型类也能在 后台管理显示管理,需要将自己的类注册到后台管理界面 添加自己定义模型类的后台管理数据表的,需要用 方法进行注册...模型管理器类 ModelAdmin 实现的高级管理功能 list_display 去控制哪些字段会显示在 Admin 的修改列表页面

    4K40

    HBase面试题汇总

    list 显示所有表名列表 disable/enable 禁用/解禁一个表 disable_all/enable_all 禁用/解禁所有表 is_disabled 确认表是否被禁用 drop/drop_all...删除一个或全部表 truncate 禁用、删除并重建一个表 数据操作命令 命令 描述 put 添加一个值到单元格 get 通过表名、行键等参数获取行或单元格数据 scan 遍历表并输出满足指定条件的行记录...那么,要查询的数据也会先经过哈希计算,在数组快速寻找,如果已经置为1,说明数据可能在这个集合,如果为0,说明一定不在集合。 所以布隆过滤器是一种粗略的过滤手段。...如果在查询数据时,同时发现这3个位置均为1,则说明很大的概率可以在当前集合中找到期望的数据,否则一定不在当前集合。 从HBase 0.96以来,默认启用基于行的Bloom Filters。...而且除非这一行只有一列,否则row+column的布隆过滤器会占用较多的存储空间。所以,当每个数据至少为几千字节时,它的效果最好。 布隆过滤器需要在数据删除后重建,因此不适合有大量删除的环境。

    26430

    Django博客教程(四):让 django 完成翻译—迁移数据库模型

    为了让 django 完成翻译,帮我们创建好这些数据库表,我们再一次请出我的工程管理助手manage.py。...和创建数据库表一样,django 为这些操作提供了一整套方法,从而把我们从数据库解放出来。我们不用学习如何利用数据库语言去完成这些操作,只要简单地调用几个 python 函数就可以满足我们的需求。...先在命令行来探索一下这些函数,感受一下如何使用 django 的方式来操作数据库。在 manage.py 所在目录下运行命令: ? 这打开了一个交互式命令行。...objects 是我们的模型管理器,它为我们提供一系列从数据库取数据方法,这里我们使用了 all() 方法,表示我们要把对应的数据全部取出来。...但以后你开发自己的项目时,你就需要通过阅读 django 的官方文档 来了解有哪些方法已经如何使用它们。

    1.1K90

    带你构建你的的第一个Python和Django应用程序

    您可以通过访问此站点轻松地尝试此代码,将代码示例粘贴到页面右侧的编辑器,然后单击run页面上方的按钮以查看输出。 条件逻辑 条件逻辑同样简单。...因此,我们必须将键盘输入强制转换为字符串,否则在检查字符串是否大于18时会出现错误。 最后,请注意else对if语句中不符合条件的任何其他输入执行的语句。...下面的代码显示如何创建一个列表,并遍历它来将每个项目打印到终端。 上面的代码创建了一个包含数字,字符串和列表的列表(是的,列表可以包含其他列表!)。为了遍历列表,一个for-in循环派上用场。...Django包含了许多其他有用的东西,但是随着您的进行,您可能会发现它们。我们将在本教程中使用Django来构建我们的网站。 设置 在本教程,我将向您展示如何启动并运行Django网站。...现在运行服务器不会显示任何警告。 网址和模板 当我们运行服务器时,显示了默认的Django页面。我们需要Django来访问我们的howdy应用程序,当有人去的主页网址是/。

    2.6K50

    Django admin 一些有用的设置

    Django自带的后台管理Django明显特色之一,可以让我们快速便捷管理数据。后台管理可以在各个app的admin.py文件中进行控制。以下是我最近摸索总结出比较实用的配置。...一、基本设置 1、应用注册 若要把app应用显示在后台管理,需要在admin.py中注册。这个注册有两种方式,我比较喜欢用装饰器的方式。 先看看普通注册方法。...每条数据都有 个确认标识(上图红框),如果已经确认,用户再点击进入查看信息的时候全部只读显示,即不能在做修改,如果没确认在可以修改。如下: 已确认: ? 未确认: ?  ...我们如何修改这个app的名称达到定制的要求呢,其实Django已经在文档里进行了说明。 从Django1.7以后不再使用app_label,修改app相关需要使用AppConfig。...9.自定义列表字段 上面的一对多和多对多可以数据编辑显示,但在列表没有显示。有时还需要显示一些其他东西。例如两个字段相乘计算结果等等。这些都可以通过自定义列表字段处理和显示

    2.6K70

    三、模型(一)

    Django Admin的错误信息会优先根据Admiin内部的ModelForm错误信息提示,如果都成功,才来检查Model的字段并显示指定错误信息 b....当你使用Django modle API创建对象时Django并未将对象保存至数据库内,除非你调用`` save()`` 方法。...__unicode__() 方法告诉Python如何将对象以unicode的方式显示出来: from django.db import models class Publisher(models.Model...如果你设置了这个选项,那么除非你检索时特意额外地使用了 order_by(),否则,当你使用 Django 的数据库 API 去检索时,Publisher对象的相关返回值默认地都会按 name 字段排序...在上面的例子,这个值是2。 删除对象 删除数据时要谨慎! 为了预防误删除掉某一个表内的所有数据,Django要求在删除表内所有数据时显示使用all()。

    4.5K90

    那些年接到奇怪的需求,如何确定需求?

    除非是把树从中截断再支起来,这样就满足要求了。 项目最重要的阶段是进行需求分析,明白真正的需求。项目需求指的是用户真正需要什么,而不是供应商假设用户需要什么和供应商能够供应什么。...无差异型需求: 这类需求无论满足与否,用户满意度都不会受其影响,用户对此因素并不在意。例如产品的简介。 反向型需求: 用户没有此需求,提供后满意度适得其反。例如产品付费功能。 3....在交互原型应包含如下内容: 原型界面的名称、入口,原型间关联关系和使用角色 页面内容、格式及排序方法 操作要点:比如交互的信息提示、界面规则和约束(比如界面以不同颜色显示不同的校验结果)。...(2)订单逻辑 订单系统的核心,起着至关重要的作用,在订单系统负责管理订单创建、订单支付、订单生产、订单确认、订单完成、取消订单等订单流程。...每个流程触发的条件又可分为系统触发和人工触发两种场景。 下面以一个通用B2C商城的订单系统为例,根据其实际业务场景,其订单流程可抽象为5大步骤:订单创建>订单支付>订单生产>订单确认>订单完成。

    22910

    Django 完成翻译:迁移数据库

    迁移数据库 为了让 Django 完成翻译,创建好这些数据库表,我们再一次请出我的工程管理助手 manage.py。...我们不用学习如何利用数据库语言去完成这些操作,只要简单地调用几个 Python 函数就可以满足我们的需求。 存数据 先在命令行来探索一下这些函数,感受一下如何Django 的方式来操作数据库。...确保数据库只有一条值为 category test 的记录,否则 get 方法将返回一个 MultipleObjectsReturned 异常。如果你不小心已经存了多条记录,请删掉多余的记录。...如何删除数据请看下文。...,保存在变量 p ,然后调用它的delete 方法,最后看到 Post.objects.all() 返回了一个空的 QuerySet(类似于一个列表),表明数据库已经没有 Post,Post 已经被删除

    1.2K90

    Django内置的通用类视图及实例

    : 指定在上下文中使用的变量的名称. pk_url_kwarg: URLconf,包含逐渐的关键字参数的名称.默认为'pk'. get_context_data:返回显示对象的上下文数据....None):返回该视图要显示的单个对象.如果提供了queryset,该queryset将作为对象的查询源,否则,将使用get_queryset().get_object()从视图的所有参数查找pk_url_kwarg...显示用于编辑现有对象的表单的视图,重新显示具有验证错误信息的视图,并且保存对象.这里使用从对象模型自动生成的表单(除非手动制定表单类)....显示确认页面并删除现有对象的视图.仅当请求方法为POST时,才会删除给定的内容.如果此视图是通过GET提取的,它将显示一个确认页面,其中包含POST到同一网址的表单....http://127.0.0.1:8000/crud/ 即可对员工进行增加、删除、修改 tips: 1、注意模板位置 2、urls引入相应的模块 -----UpdateView和CreateView

    2.9K40
    领券