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

如何在Django admin中隐藏删除后的对象?

在Django admin中隐藏删除后的对象可以通过重写ModelAdmin类的delete_view方法来实现。具体步骤如下:

  1. 创建一个admin.py文件,并导入相关模块:
代码语言:txt
复制
from django.contrib import admin
from django.contrib.admin.utils import unquote
from django.contrib.admin.views.main import IS_POPUP_VAR
from django.contrib.admin.options import get_deleted_objects
from django.contrib.admin.utils import model_ngettext
from django.contrib.admin import helpers
from django.contrib.admin.utils import quote
from django.http import HttpResponseRedirect
from django.template.response import TemplateResponse
from django.utils.encoding import force_text
from django.utils.html import format_html
from django.utils.translation import ugettext_lazy as _
  1. 创建一个自定义的ModelAdmin类,继承自admin.ModelAdmin,并重写delete_view方法:
代码语言:txt
复制
class CustomModelAdmin(admin.ModelAdmin):
    def delete_view(self, request, object_id, extra_context=None):
        """
        The 'delete' admin view for this model.
        """
        model = self.model
        opts = model._meta

        obj = self.get_object(request, unquote(object_id))

        if not self.has_delete_permission(request, obj):
            raise PermissionDenied

        using = router.db_for_write(model)

        if request.method == 'POST':
            if obj is None:
                raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {
                    'name': force_text(opts.verbose_name),
                    'key': escape(object_id),
                })

            # Populate deleted_objects, a data structure of all related objects that
            # will also be deleted.
            deleted_objects, model_count, perms_needed, protected = get_deleted_objects(
                [obj], opts, request.user, self.admin_site, using)

            if request.POST.get('post'):
                if perms_needed:
                    raise PermissionDenied(_("You do not have permission to delete this %(name)s.") % {
                        'name': force_text(opts.verbose_name),
                    })
                obj_display = force_text(obj)
                self.log_deletion(request, obj, obj_display)
                self.delete_model(request, obj)

                return self.response_delete(request, obj_display, obj)

            if perms_needed or protected:
                title = _("Cannot delete %(name)s") % {"name": force_text(opts.verbose_name)}
            else:
                title = _("Are you sure?")

            context = {
                **self.admin_site.each_context(request),
                'title': title,
                'object_name': force_text(opts.verbose_name),
                'object': obj,
                'deleted_objects': deleted_objects,
                'model_count': dict(model_count).items(),
                'perms_lacking': perms_needed,
                'protected': protected,
                'opts': opts,
                'root_path': self.admin_site.root_path,
                'app_label': opts.app_label,
                'preserved_filters': self.get_preserved_filters(request),
                'is_popup': (IS_POPUP_VAR in request.POST or
                             IS_POPUP_VAR in request.GET),
                'obj': obj,
            }

            # Display the confirmation page
            return TemplateResponse(request, self.delete_confirmation_template or [
                "admin/%s/%s/delete_confirmation.html" % (opts.app_label, opts.model_name),
                "admin/%s/delete_confirmation.html" % opts.app_label,
                "admin/delete_confirmation.html"
            ], context)

        context = {
            **self.admin_site.each_context(request),
            'title': _("Are you sure?"),
            'object_name': force_text(opts.verbose_name),
            'object': obj,
            'opts': opts,
            'root_path': self.admin_site.root_path,
            'app_label': opts.app_label,
            'preserved_filters': self.get_preserved_filters(request),
            'is_popup': (IS_POPUP_VAR in request.POST or
                         IS_POPUP_VAR in request.GET),
            'obj': obj,
        }

        # Display the confirmation page
        return TemplateResponse(request, self.delete_confirmation_template or [
            "admin/%s/%s/delete_confirmation.html" % (opts.app_label, opts.model_name),
            "admin/%s/delete_confirmation.html" % opts.app_label,
            "admin/delete_confirmation.html"
        ], context)
  1. 在admin.py文件中注册你的ModelAdmin类:
代码语言:txt
复制
from django.contrib import admin
from .models import YourModel

admin.site.register(YourModel, CustomModelAdmin)

通过以上步骤,你可以在Django admin中隐藏删除后的对象。当你删除一个对象时,它将不再显示在列表中,但仍然存在于数据库中。

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

相关·内容

多年学习django经验markdown总结,基础到高手,共计50页,10大模块。 第(1)期

提供项目工程管理自动化脚本工具数据库ORM支持(对象关系映射,英语:Object Relational Mapping)模板表单Admin管理站点文件管理认证权限session机制缓存2)MVT模式有一种程序设计模式叫....所有的虚拟环境都位于/home/下隐藏目录.virtualenvs下如何搭建虚拟环境?...,创建虚拟环境mkvirtualenv -p python3 虚拟环境名称例 : mkvirtualenv -p python3 py3_django提示 :创建虚拟环境需要联网创建成功, 会自动工作在这个虚拟环境上工作在虚拟环境上...:rmvirtualenv 虚拟环境名称例 :删除虚拟环境py3_django先退出:deactivate 再删除:rmvirtualenv py3_django何在虚拟环境安装工具包?...包 pip install django==1.11.11查看虚拟环境安装包 :pip list创建Django项目步骤创 建Django项目django-admin startproject name

25050

Django教程第1章 | 快速入门 | 基础知识

django特点 ORM(对象关系映射): Django 提供了一个强大 ORM,允许开发者通过 Python 代码来定义和操作数据库模型,而无需直接使用 SQL。...自动化 admin 界面: Django 自动生成管理后台,使得管理和操作数据库过程变得非常简单。开发者可以轻松地创建、修改和删除数据库记录,而无需编写自定义管理界面。...安全性: Django 内置了一些安全性功能,例如防止常见 Web 攻击( CSRF 攻击),并提供了方便用户身份验证和授权系统。...runserver ip port 启动服务器,在浏览器访问 127.0.0.1:8000 Django Admin 管理工具 Django 提供了基于 web 管理工具。...这里让 Advance 部分隐藏: Advance 部分旁边有一个 Show 按钮,用于展开,展开可点击 Hide 将其隐藏,如下图所示: 内联(Inline)显示 上面的 Contact 是 Tag

15810

Django | 开发】面试招聘信息网站(快速搭建核心需求)

setting简单配置等)✨ 文章目录 一、创建职位管理后台 1.1 定义用户模型 1.2 在admin优化管理 1.3 效果 二、匿名用户可查看职位列表和职位详情 三、产品背景迭代思维 3.1...,后面修改和数据迁移操作会麻烦多) 在 jobs.models.py应用创建如下模型: from datetime import datetime from django.contrib.auth.models...会被自动调用 def save_model(self, request, obj, form, change): # object对象 由于隐藏了job_creator字段,且没有默认值...遇到其他类型指定转换值) def __str__(self): return self.user_name 在admin.py from django.contrib import...', 'phone', 'city') 三板斧运行服务器 六、优化admin 6.1 分组填写 很显然,表结构太复杂,因为字段太多,所以我们需要优化admin,实现分组填写 from django.contrib

75520

35.Django2.0文档

限制返回数据 ? 7.更新和删除对象 update()方法对于任何结果集(QuerySet)均有效,这意味着你可以同时更新多条记录。...在上面的例子,这个值是2  删除数据库对象只需调用该对象delete()方法即可: ?...其它django.contrib应用程序,django.contrib.redirects,其它从网上下在第三方Django应用程序一样,都会自行添加到管理工具。  ...普通活跃,非超级用户管理用户可以根据一套设定好许可进入。 管理界面每种可编辑对象:books、authors、publishers)都有三种权限:创建许可,编辑许可和删除许可。...例如,你可以给一个用户添加和修改publishers权限,而不给他删除权限。 请注意,这些权限是定义在模块级别上,而不是对象级别上

11.2K100

Web 开发 Django 模型

简介 Django 模型是真实数据简单明确描述,它包含了储存数据所必要字段和行为,在创建模型前需要先配置好数据库。...每个模型有一些类变量,它们都表示模型里一个数据库字段。 每个字段都是 Field 类实例, CharField 对应数据库字符串字段。...使用 ForeignKey 可以定义表外键关联,本例中用 ForeignKey 定义了每个 Choice 都要关联到一个 Question 对象上。...模型操作 对模型对象操作,本质上就是数据库数据操作。下面我们就通过对模型对象操作实现对数据库记录基本CURD操作。...: image.png 更新成功,我们再试下删除数据了,通过查看删除相关代码是把 id 为2数据删除了,这次我们访问 URL http://127.0.0.1:8080/polls/del,然后返回删除再次查询所有记录页面

1.1K10

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

删除单个MyModel对象删除一个查询结果集(QuerySet)全部对象都是调用 delete()方法 删除单个对象 步骤 查找查询结果对应一个数据对象 调用这个数据对象 delete ()...步骤 查找查询结果集中满足条件全部 QuerySet 查询集合对象 调用查询集合对象 delete () 方法实现删除 示例: # 删除全部作者,年龄大于65全部信息 auths = Author.objects.filter...包,使用前需要先导入 : from django.db import connection 用创建 cursor 类构造函数创建 cursor 对象,再使用 cursor 对象,为保证在出现异常时能释放...(设置完成需要立马更新同步数据库) 2. verbose_name = '单数名' - 给模型对象一个易于理解名称(单数),用于显示在/admin管理界面...Django模拟SQL约束ON DELETE CASCADE行为,并删除包含ForeignKey对象

4K40

Admin站点

在创建应用时,Django会向apps.py文件写入一个该应用配置类, from django.apps import AppConfig class BooktestConfig(AppConfig...AppConfig.verbose_name 属性用于设置该应用直观可读名字,此名字在Django提供Admin管理站点中会显示, 注册模型类 登录后台管理,默认没有我们创建应用定义模型类...在列表页中点击"增加"可以进入增加页,Django会根据模型类不同,生成不同表单控件,按提示填写表单内容后点击"保存",完成数据创建,创建成功返回列表页。 ?...点击执行后进入确认页面,删除回来列表页面。 ? 定义与使用Admin管理类 Django提供Admin站点展示效果可以通过自定义ModelAdmin类来进行控制。...关联对象 在一对多关系,可以在一端编辑页面编辑多端对象,嵌入多端对象方式包括表格、块两种。 类型InlineModelAdmin:表示在模型编辑页面嵌入关联模型编辑。

2.1K20

初探Django框架

(默认情况下Django 会自动对 views.py 传到HTML文件标签跳转标签, script标签语法进行转义,令其语义失效)。...首先,向服务器发送请求,获取登录页面,此时中间件 csrf 会自动生成一个隐藏input标签,该标签里 value 属性值是一个随机字符串,用户获取到登录页面的同时也获取到了这个隐藏input标签...删除数据库对象只需调用该对象delete()方法即可,示例代码如下: from django.http import HttpResponse from TestModel.models import...().delete() return HttpResponse("删除成功") 所以实际上删除操作就是通过查询操作获得一些元组使用delete()函数就是删除数据。...参数为字符串,字符串填写页面路径。一般用于 form 表单提交,跳转到新页面。

2K20

Django流程_菜鸟裹裹收费标准

逻辑删除(isDelete = True) I、关联对象 创建一个学生 获得关联对象集合 创建一个学生属于‘’python04‘’班 8、启动服务器 a、格式: b、说明: 9、Admin站点管理 a...web服务器,仅仅在开发测试中使用 9、Admin站点管理 a、概述: 内容发布 负责添加、删除、修改内容 公共访问 b、配置Admin应用 在settings.py文件INSTALLED_APPS...添加“django.contrib.admin”,默认是已经添加好 c、创建管理员用户 执行:python manage.py createsuperuse 依次输入用户名、邮箱、密码 创建在网址输入账号密码...= True # admin.site.register(Students,StudentsAdmin) 11、视图基本使用 a、概述: 在django,视图对web请求进行回应 视图就是一个python...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除

1.3K30

django 1.8 官方文档翻译: 1-2-2 编写你第一个Django应用,第2部分

哲理 为你员工或客户生成添加、修改和删除内容管理性网站是个单调乏味工作。 出于这个原因,Django 根据模型完全自动化创建管理界面。...Save and add another – 保存更改并载入当前对象类型空白表单。 Delete – 显示删除确认页。...这样的话你就需要在注册对象 时告诉 Django 对应配置。 让我们来看看如何在编辑表单上给字段重新排序。...使用了 TabularInline (而不是 StackedInline) ,基于表格式下相关 对象被显示更紧凑了: 需要注意是有个额外 “Delete?”...再次强调,如果你不能理解模板语言的话不用担心 – 我们将在教程 3 详细介绍。 当你熟悉了管理网站功能,阅读 教程 第3部分 开始开发公共 poll 界面。

2.5K40

Python全栈开发之Django基础

对象关系映射,是随着面向对象思想发展而产生,是一种程序技术,用于实现面向对象编程语言里不同类型系统数据之间转换,面向对象是从软件工程基本原则(耦合、聚合、封装)基础上发展起来,而关系数据库则是从数学理论发展而来...方法 init:创建HttpResponse对象完成返回内容初始化 set_cookie:设置Cookie信息 delete_cookie(key):删除指定keyCookie,如果key...在使用Session,会在Cookie存储一个sessionid数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sessionid,会根据这个值找出这个请求者Session 对象及方法...() 清除session数据,在存储删除session整条数据 request.session.flush() 删除session指定键及值,在存储删除某个键及对应值 del request.session...、添加、修改、删除数据,开发这些重复功能是一件单调乏味、缺乏创造力工作,为此,Django能够根据定义模型类自动地生成管理模块 页选项 页大小,每页显示多少条数据 list_per_page=100

3.7K20

django开发】知识经验总结共50页md文档。今日分享:django配置和数据库操作详解

在创建应用时,Django会向apps.py文件写入一个该应用配置类, from django.apps import AppConfig class BookConfig...AppConfig.verbose_name 属性用于设置该应用直观可读名字,此名字在Django提供Admin管理站点中会显示, from django.apps import AppConfigclass...F对象和Q对象关联查询查询集QuerySetMVT图解项目准备1.创建项目django-admin startproject bookmanager2.创建应用 python manager.py startapp...2 ) 关于主键django会为表创建自动增长主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列django不会再创建自动增长主键列。...1 )save通过创建模型类对象,执行对象save()方法保存到数据库

19910

Django学习笔记之ORM字段和字段参数

简单说,ORM是通过使用描述对象和数据库之间映射元数据,将程序对象自动持久化到关系数据库。 ORM在业务逻辑层和数据库层之间充当了桥梁作用。 2. ORM由来 让我们从O/R开始。...当对象信息发生变化时候,我们就需要把对象信息保存在关系数据库。...ORM优势 ORM解决主要问题是对象和关系映射。它通常把一个类和一个表一一对应,类每个实例对应表一条记录,类每个属性对应表每个字段。 ...Django Admin错误信息会优先根据Admiin内部ModelForm错误信息提示,如果都成功,才来检查Model字段并显示指定错误信息 b....Admin显示选择框内容,用不变动数据放在内存从而避免跨表操作 :gf = models.IntegerField(choices=[(0, '

5.1K10

Django权限机制实现

2 Django 自带权限机制应用 2.1 Permission 如上文所述,Django定义每个model,默认都会添加该modeladd, change和delete三个permission...基于django原生逻辑扩展了django权限机制,应用django-guardian,可以使用django-guardian提供方法以及django原生方法检查全局权限,django-guardian...先不加任何权限保存,用新用户登录admin: ? 直接提示无权修改任何东西,因为没有任何权限。 尝试增加一个Studentchange权限,刷新一下: ?...只有修改权限, 因为我们加就是修改权限, 但是这里好你有删除选项,执行试一下 ? 无法显示,显然是没有权限 删除 ?...建立权限名称和描述信息,这个信息是在django admin设置权限时显示信息 第二步,建立一个权限表Permission, 将权限名称,url名称,请求方法(get or post), 参数列表保存进去

1.1K10

Django—入门

在ORM框架,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应表格数据。...django内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表增删改查操作。...使用django进行数据库开发步骤如下: 1.在models.py定义模型类 2.迁移 3.通过类和对象完成数据增删改查操作 下面我们以保存图书信息为例来给大家介绍Django中进行数据库开发整个流程...3.注册模型类 登录后台管理,默认没有我们创建应用定义模型类,需要在自己应用admin.py文件中注册,才可以在后台管理中看到,并进行增删改查操作。...点击执行后进入确认页面,删除回来列表页面。 4.自定义管理页面 在列表页只显示出了BookInfo object,对象其它属性并没有列出来,查看非常不方便。

1.8K10

后端框架学习-Django

值),QueryDict查询字典对象 POST:拿POST表单里数据,即用户提交数据,QueryDict查询字典对象 FILES:类似于字典对象,拿文件 COOKIES session body...映射图: ORM———->DB 类———->数据表 对象——–>数据行 属性——–>字段 数据库迁移: 迁移是Django同步您对模型所做出更改(添加字段,删除模型等)到您数据库模式方式。...1.单个数据删除 查找对应数据对象 调用该数据对象delete()方法实现删除 2.批量数据删除 查找QuerySet 调用delete()方法实现删除 3.伪删除操作 通过在表里添加一个布尔型字段...process_template_response(self,request,response) 在响应包含render方法时被调用,该方法返回二次封装render响应对象。...对象 Paginator对象属性 count:需要分页数据对象总数 num_pages:分页页面总数 page_range:从1开始range对象,用于记录当前页码数 per_page:每页数据个数

9.3K40

django框架菜鸟教程_django框架菜鸟教程

DEBUG 调试模式,创建工程初始值为True,即默认工作在调试模式下。 作用: 修改代码文件,程序自动重启 Django程序出现异常时,向前端显示详细错误追踪信息....执行流程 在请求视图被处理前,中间件由上至下依次执行 在请求视图被处理,中间件由下至上依次执行 六、模板 1、配置 settings.py配置文件修改TEMPLATESDIRS 2、定义 3、渲染...调用模板两步骤: loader.get_template(模板文件在模板目录相对路径)–> 返回模板对象 模板对象.render(contex=None,request=None)–>返回渲染...显示标题 # admin.py: class BookInfoAdmin(admin.ModelAdmin): ......发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除

3K40
领券