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

Django -在管理工作中显示历史记录,但仅当操作在管理中发生时才显示

在 Django 中,如果你想在管理界面中显示历史记录,但仅限于在管理界面中发生的操作,你可以使用 Django 的 LogEntry 模型和自定义的管理命令来实现这一功能。

基础概念

Django 的 LogEntry 模型用于跟踪模型实例的变化。默认情况下,Django 管理界面会记录对模型实例的所有更改,并在模型的历史记录页面中显示这些更改。

相关优势

  1. 审计跟踪:可以清楚地看到谁在何时做了什么更改。
  2. 数据完整性:有助于维护数据的完整性和一致性。
  3. 责任归属:便于追踪问题和责任。

类型

  • 创建:记录对象的创建。
  • 更新:记录对象的修改。
  • 删除:记录对象的删除。

应用场景

  • 内容管理系统:跟踪文章、页面等内容的编辑历史。
  • 电子商务平台:跟踪订单状态的变更。
  • 用户管理系统:跟踪用户信息的修改。

实现步骤

  1. 启用历史记录: 在你的 admin.py 文件中,为需要跟踪历史的模型启用历史记录功能。
  2. 启用历史记录: 在你的 admin.py 文件中,为需要跟踪历史的模型启用历史记录功能。
  3. 自定义历史记录: 创建一个自定义的管理命令,用于过滤仅在管理界面中发生的操作。
  4. 自定义历史记录: 创建一个自定义的管理命令,用于过滤仅在管理界面中发生的操作。
  5. 运行自定义命令: 在终端中运行自定义命令来查看过滤后的历史记录。
  6. 运行自定义命令: 在终端中运行自定义命令来查看过滤后的历史记录。

遇到的问题及解决方法

问题:历史记录显示了非管理界面的操作。

原因:可能是由于在其他地方(如视图或脚本)直接修改了模型实例,而没有通过管理界面。

解决方法

  • 确保所有对模型的更改都通过管理界面进行。
  • 在自定义的管理命令中添加逻辑来过滤掉非管理界面的操作。

示例代码

代码语言:txt
复制
# admin.py
from django.contrib import admin
from django.contrib.admin.models import LogEntry
from .models import YourModel

class YourModelAdmin(admin.ModelAdmin):
    list_display = ('field1', 'field2', 'modified_by', 'modified_date')

    def save_model(self, request, obj, form, change):
        if change:
            obj.modified_by = request.user
        super().save_model(request, obj, form, change)

admin.site.register(YourModel, YourModelAdmin)

# management/commands/filter_admin_logs.py
from django.core.management.base import BaseCommand
from django.contrib.admin.models import LogEntry

class Command(BaseCommand):
    help = 'Filter admin log entries'

    def handle(self, *args, **options):
        admin_log_entries = LogEntry.objects.filter(action_flag__in=[1, 2, 3])
        for entry in admin_log_entries:
            self.stdout.write(self.style.SUCCESS(f'{entry.user} - {entry.object_repr} - {entry.action_flag}'))

通过上述步骤,你可以确保历史记录仅显示在管理界面中发生的操作。

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

相关·内容

五分钟搞定Bash功能与使用技巧

一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无法与硬件或内核打交道的,用户通过应用程序或部分系统软件发出指令(可能是通过浏览器发送一封邮件...记录命令历史的除了可以查看历史记录外,还可以在需要时直接调用历史记录再次执行该命令: 1.上下键翻阅历史命令,找到合适的命令后直接回车即可执行。 2. 输入!...以下通过几个简单的实例演示重定向的使用方法: 4快捷键 Bash准备了大量的快捷键为用户使用,熟练掌握这些快捷键的全部或部分会使你在工作中受益颇多,开始的时候你可能需要花费大量的时间来记忆这些快捷键,但一旦你记住了他们...2.标准输出与错误输出分离重定向 很多时候自动运行的脚本编写完成后,是要在深夜服务器负载最低时以无人职守方式运行的,那么当管理员去检查脚本运行情况时会希望看到哪些命令执行成功了,哪些命令出现了问题,并且为了方便管理需要将正确输出与错误输出分写保存在两个不同的记录文件中...其中[&]控制符使得命令开启一个子Shelll并在后台执行;使用[;]控制字符可以把多个命令组合,但多个命令之间没有任何逻辑上的关系,仅按循序执行;使用[&&]控制字符也可以将多个命令组合,但仅当前一个命令执行成功后才会执行

1K70

五分钟搞定Bash功能与使用技巧 转

一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无法与硬件或内核打交道的,用户通过应用程序或部分系统软件发出指令(可能是通过浏览器发送一封邮件...记录命令历史的除了可以查看历史记录外,还可以在需要时直接调用历史记录再次执行该命令: 1.上下键翻阅历史命令,找到合适的命令后直接回车即可执行。 2. 输入!...4快捷键 Bash准备了大量的快捷键为用户使用,熟练掌握这些快捷键的全部或部分会使你在工作中受益颇多,开始的时候你可能需要花费大量的时间来记忆这些快捷键,但一旦你记住了他们,你的工作效率会直线上升。...2.标准输出与错误输出分离重定向 很多时候自动运行的脚本编写完成后,是要在深夜服务器负载最低时以无人职守方式运行的,那么当管理员去检查脚本运行情况时会希望看到哪些命令执行成功了,哪些命令出现了问题,并且为了方便管理需要将正确输出与错误输出分写保存在两个不同的记录文件中...其中[&]控制符使得命令开启一个子Shelll并在后台执行;使用[;]控制字符可以把多个命令组合,但多个命令之间没有任何逻辑上的关系,仅按循序执行;使用[&&]控制字符也可以将多个命令组合,但仅当前一个命令执行成功后才会执行

56130
  • 五分钟搞定Bash功能与使用技巧

    一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无法与硬件或内核打交道的,用户通过应用程序或部分系统软件发出指令(可能是通过浏览器发送一封邮件...记录命令历史的除了可以查看历史记录外,还可以在需要时直接调用历史记录再次执行该命令: 1.上下键翻阅历史命令,找到合适的命令后直接回车即可执行。 2. 输入!...4、快捷键 Bash准备了大量的快捷键为用户使用,熟练掌握这些快捷键的全部或部分会使你在工作中受益颇多,开始的时候你可能需要花费大量的时间来记忆这些快捷键,但一旦你记住了他们,你的工作效率会直线上升。...2.标准输出与错误输出分离重定向 很多时候自动运行的脚本编写完成后,是要在深夜服务器负载最低时以无人职守方式运行的,那么当管理员去检查脚本运行情况时会希望看到哪些命令执行成功了,哪些命令出现了问题,并且为了方便管理需要将正确输出与错误输出分写保存在两个不同的记录文件中...其中[&]控制符使得命令开启一个子Shelll并在后台执行;使用[;]控制字符可以把多个命令组合,但多个命令之间没有任何逻辑上的关系,仅按循序执行;使用[&&]控制字符也可以将多个命令组合,但仅当前一个命令执行成功后才会执行

    50510

    五分钟搞定Bash功能与使用技巧

    一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无法与硬件或内核打交道的,用户通过应用程序或部分系统软件发出指令(可能是通过浏览器发送一封邮件...记录命令历史的除了可以查看历史记录外,还可以在需要时直接调用历史记录再次执行该命令: 1.上下键翻阅历史命令,找到合适的命令后直接回车即可执行。 2. 输入!...n来准确定位历史记录,如!242将直接调用命令历史的第242条记录并执行。 3. 通过Ctrl+r快捷键打开搜索功能,接着输入关键字即可在命令历史中搜索相关命令,回车完成执行操作。...640.webp (3).jpg 2.标准输出与错误输出分离重定向 很多时候自动运行的脚本编写完成后,是要在深夜服务器负载最低时以无人职守方式运行的,那么当管理员去检查脚本运行情况时会希望看到哪些命令执行成功了...其中[&]控制符使得命令开启一个子Shelll并在后台执行;使用[;]控制字符可以把多个命令组合,但多个命令之间没有任何逻辑上的关系,仅按循序执行;使用[&&]控制字符也可以将多个命令组合,但仅当前一个命令执行成功后才会执行

    55800

    2024最新 PyCharm 2024.1 更新亮点看这篇就够了

    当您滚动代码时,类或方法的起始行会自动固定在编辑器顶部,确保重要的结构元素如类定义始终在视线范围内。这不仅优化了代码阅读效率,还可以通过点击顶部固定的行快速导航至相关部分。...主要特点: 自动激活审查模式:当您检查拉取/合并请求分支时,审查模式自动开启,并在边缘装订区域用紫色标记突出显示更改区域。...现在,您可以在 Django Structure(Django 结构)工具窗口中快速检查并一键注册未注册的 admin 类,这一改进显著简化了 Django 管理界面的配置过程。...数据库工具:PyCharm Professional 功能优化 简化的会话方式 我们全新构思了会话管理方式,目的是简化您在管理数据源连接和执行查询时的操作流程。...它包括一个侧面板,显示值编辑器和聚合视图,如果单元在主网格中可编辑,在记录视图中同样可编辑。

    2.9K20

    110-Django开发社交聊天网站

    用户密码管理:提供密码重置、修改密码等功能。2. 权限管理角色管理:定义不同的用户角色(如普通用户、管理员),并为每种角色分配相应的权限。...好友管理添加好友:允许用户搜索并添加其他用户为好友。好友列表:显示用户的好友列表,包括在线状态和最近联系时间。删除好友:允许用户从好友列表中删除某个好友。...消息历史记录:保存聊天室的消息历史记录,以便用户随时查看。实时通知:当有新消息或好友请求时,通过WebSockets向用户发送实时通知。...技术实现要点使用Django的认证系统:Django内置了强大的用户认证系统,包括用户模型、登录/登出视图和中间件等,可以方便地实现用户管理功能。...可以使用Django的ORM框架来简化数据库操作。前端技术:聊天界面可以使用HTML、CSS和JavaScript等前端技术来实现。您可以使用WebSocket API来与后端进行实时通讯。

    16010

    用好Linux的history命令的运维都是牛逼运维!

    history命令是Linux系统中的一个内置命令,用于显示并管理用户在当前会话中执行过的命令历史记录。当你在终端中输入命令并执行时,这些命令会被记录下来,并保存在历史记录中,以便后续查看或重复执行。...分析自己的命令行操作习惯,了解自己在系统中的活动情况。清理和管理历史记录,以保护个人隐私或提高系统性能。为什么history命令重要?...在日常的系统管理、开发调试、故障排除等工作中,经常需要反复执行一些命令或者查找之前执行过的命令,而history命令能够帮助用户高效地完成这些任务。...-a:将新的历史命令追加到历史文件中。-n:显示历史记录时不显示命令前面的序号。-r:重新读取历史文件,用于在当前会话中加载其他会话的历史记录。...当历史记录文件的大小超过此值时,最旧的命令将被删除。这些环境变量可以通过在用户的shell配置文件(如~/.bashrc或~/.bash_profile)中进行设置来进行自定义。

    13610

    PyCharm 2024.1 发布:全面升级,助力高效编程!

    编辑器中的粘性行 我们在编辑器中引入了粘性行,旨在简化大文件的处理和新代码库的探索。 滚动时,此功能会将类或方法的开头等关键结构元素固定到编辑器顶部。...在检查拉取/合并请求分支时,审查模式会自动激活,并在装订区域中显示紫色标记,表明代码更改可供审查。 点击这些标记会弹出一个显示原始代码的弹出窗口,这样您就能快速识别哪些代码已被更改。...框架和技术 PyCharm Professional 在 Django Structure(Django 结构)工具窗口中注册模型 admin 类 在 PyCharm 2024.1 中,您可以快速检查未注册的...在 Branches(分支)弹出窗口中,您现在可以按操作和仓库筛选搜索结果。...数据编辑器中的本地筛选 现在,您可以直接在当前页面上按列值快速筛选行,无需等待查询运行。 这种本地方式仅适用于可见页面,但如果需要扩大作用域,您可以更改页面大小或提取所有数据。

    14110

    PyCharm 2024.1 最新变化,最新更新亮点汇总

    编辑器中的粘性行 我们在编辑器中引入了粘性行,旨在简化大文件的处理和新代码库的探索。 滚动时,此功能会将类或方法的开头等关键结构元素固定到编辑器顶部。...在检查拉取/合并请求分支时,审查模式会自动激活,并在装订区域中显示紫色标记,表明代码更改可供审查。 点击这些标记会弹出一个显示原始代码的弹出窗口,这样您就能快速识别哪些代码已被更改。...框架和技术 PyCharm Professional 在 Django Structure(Django 结构)工具窗口中注册模型 admin 类 在 PyCharm 2024.1 中,您可以快速检查未注册的...在 Branches(分支)弹出窗口中,您现在可以按操作和仓库筛选搜索结果。...数据编辑器中的本地筛选 现在,您可以直接在当前页面上按列值快速筛选行,无需等待查询运行。 这种本地方式仅适用于可见页面,但如果需要扩大作用域,您可以更改页面大小或提取所有数据。

    1.3K10

    21条最佳实践,全面保障 GitHub 使用安全

    ** ​ Git code commit 保存了已添加和删除内容的历史记录,从而使敏感数据永久保留在分支上。当分支合并和 Fork 时,潜在的数据或基础架构安全风险可能会呈指数级增长。...2FA 在登录 GitHub 时增加了一层额外的安全保护,并且可以通过组织的设置在组织级别强制执行。 ​ 当保存设置后,系统可能会提示有关未激活 2FA 的个人详细信息。...这意味着,企业可以限制用户仅使用组织的帐户登录,而不是使用个人 GitHub 帐户。这能够有效缓解在向 GitHub 帐户授予可访问性时可能发生的潜在安全风险。 ​ 7....完成此操作后,您可以将 GPG key 添加到 GitHub。在提交时,提交旁边会显示一个“已验证”标志。 ​ 11. 执行提交前代码审查 强制执行代码审查可以防止恶意代码正式合并到分支中。...谁做了什么的详细信息可以帮助标记可疑活动,并根据用户的操作、操作的基于国家/地区的位置以及发生的日期和时间创建快速跟踪配置文件。这三条信息可以帮助管理员检测异常并快速查明其来源。 ​ 16.

    1.8K40

    不知道真是太可惜了! 下一代终端“Warp”

    终端是程序员、系统管理员和其他技术人员日常工作中不可或缺的工具。 但是,默认终端具有功能限制,可能会降低您的工作效率。 在本文中,我们将介绍解决此类问题的 Warp 的基本用法和有用的功能。...与传统终端不同,Warp 提供了许多增强功能和特性,使其在日常开发和操作中更高效、更直观。...GUI 文本操作 它使您免于使用或键入时返回错误字符的麻烦。←Option + ← 命令补全 通过按 Tab,您可以显示输入建议列表,它会在键入时根据命令历史记录建议输入建议。...书签功能 通过为命令历史记录添加书签,您可以快速访问重要命令。 仅关注书签Option + 上下キー(↑↓) 易于阅读的命令历史记录 ↑您只需按 即可查看过去键入的命令列表。...命令面板 Command + P您可以在 Warp 中查看可在 Warp 中执行的键盘快捷键。 最后 我也是最近才开始使用这个工具的,有什么新的体验会再次和大家分享。 今天的内容就是这些了。

    2.8K10

    SAP最佳业务实践:MM–消耗品采购(129)-2消耗品采购

    在 项目概览的项目行中,进行以下输入: 字段名称 用户操作和值 注释 科目分配类别 K表示成本中心F表示订单 如果选择K,必须在科目分配标签页中输出成本中心1201或1202 短文本 输入项目的描述...如果系统提示您这样做,那么当 科目分配类别 中输入K 时,则在 科目分配 标签页上输入成本中心,如 1201(用于原材料和半成品物料)或1202(用于HAWA 物料)。...只有采购订单值高于 500 CNY 时,才需要审批采购订单 · 如果是,请转到步骤® 4.2 审批采购订单。 · 如果不是,则转到步骤® 4.3 消费品的收货。...后勤-物料管理-库存管理-货物移动-收货-对采购订单-采购订单的收货(MIGO) 1. 在初始屏幕上,输入采购订单编号并选择 回车。 2....将显示消息 物料凭证XXXXXXXXXXXX 已过账。 10. 显示采购订单并检查采购订单历史记录。 11. 选择 返回 返回到 SAP 轻松访问 屏幕。 1.

    1.6K50

    Django | 页面数据的缓存与使用

    使用Redis数据库 使用redis数据库存储缓存,首先redis是key-value类型的数据库,NoSQL,且也是内存型数据库,redis是将数据加载到内存中,进行操作,并异步将数据备份到硬盘里。...例子 在视图类或视图函数中,首先先别急着计算页面数据;而是先向缓存读取该页面的数据;若返回一个None;说明没有缓存或缓存的数据已经过期;此时才需要进行数据库查询等计算服务 并将更新后的数据写入缓存中,...但假如我设定timeout为3600,即60分钟,那么在60分钟内,如网页的数据被更新了,而用户访问时只能显示旧的页面数据,因此为了保证缓存的时效性, 可以在数据更改时删除旧缓存。...如在django自带的管理页面中,当模型发生修改时,会默认调用admin.ModelAdmin的save_model 或 delete_model 方法。...因此,继承并重写该方法,并在里面添加 删除缓存的代码,则网站管理员通过自带管理页面修改数据时,旧的页面缓存会被清除 如: class BaseModel(admin.ModelAdmin):

    1.9K40

    Django来敲门~第一部分【5.1.项目配置settings.py详解】

    项目中的数据要保存到指定的数据库中;同时我们得有一个对项目信息进行管理的系统平台;本节内容中就要对于这些亟待解决的问题进行解决(大家同样可以参考官方文档的操作方式) 1....项目配置文件settings.py 创建的Django项目中,会在根模块中包含一个settings.py配置文件,这个配置文件中用于配置和管理Django项目的管理运维信息 1.1....,在不应该访问时即使是模板的坐着也不能访问这些文件 1.2.6 APPEND_SLASH:默认值:True 是否给URL添加一个结尾的斜线,只有安装了CommonMiddleware之后,该选项才起作用...当且仅当 安装有 CommonMiddleware 时该选项才有效 1.2.26 SERVER_EMAIL 默认值: 'root@localhost' 用来发送错误信息的邮件地址, 比如发送给 ADMINS...注意 Django 仅在 DEBUG 为 True 时显示这个信息页面. 1.2.33 TEMPLATE_DIRS默认值: () (空的 tuple) 模板源文件目录列表,按搜索顺序.

    1.1K30

    使用 Replication Manager 迁移到CDP 私有云基础

    行动 “操作” 按钮提供以下项目:显示历史记录- 打开复制历史记录页面以进行复制。编辑配置- 打开编辑复制策略页面。Dry Run - 模拟复制任务的运行,但实际上并不复制任何文件或表。...显示历史记录- 打开复制历史记录页面以进行复制。 编辑配置- 打开编辑复制策略页面。 Dry Run - 模拟复制任务的运行,但实际上并不复制任何文件或表。...从Cloudera Manager 中,选择复制>复制策略。 选择策略,然后单击操作>显示历史记录。...现有快照策略显示在表格中。 找到该策略并单击操作菜单,然后选择 编辑或删除选项。 快照历史 “快照历史记录”页面显示有关已运行或尝试的快照作业的信息。...创建过程中的错误 显示创建快照时发生的错误列表。每个错误都显示相关路径和错误消息。 删除过程中的错误 显示删除快照时发生的错误列表。每个错误都显示相关路径和错误消息。

    1.8K10

    项目配置settings.py详解

    python项目简单的结构模型 但是上面的项目应用,这是在一个项目中包含了一个模块应用,如果让项目对模块应用的数据进行管理;同时按照常规项目处理要求,项目中的数据要保存到指定的数据库中;同时我们得有一个对项目信息进行管理的系统平台...项目配置文件settings.py 创建的Django项目中,会在根模块中包含一个settings.py 配置文件,这个配置文件中用于配置和管理Django项目的管理运维信息 1.1....,在不应该访问时即使是模板的坐着也不能访问这些文件 1.2.6 APPEND_SLASH:默认值:True 是否给URL添加一个结尾的斜线,只有安装了CommonMiddleware之后,该选项才起作用...当且仅当 安装有 CommonMiddleware 时该选项才有效 1.2.36 SERVER_EMAIL默认值: [‘root@localhost’](mailto:‘root@localhost’)...TemplateSyntaxError,一个详细的错误报告信息页将被显示给你.这个报告包括有关的模板片断,相应的行会自动高亮.注意 Django 仅在 DEBUG 为 True 时显示这个信息页面.

    1.2K10

    管理SMM预警策略

    Streams MessagingManager(SMM)是一种操作监视和管理工具,可在企业ApacheKafka®环境中提供端到端的可见性。...预警策略概述 预警策略根据您在预警策略中配置的条件通过通知程序发送通知。 您可以在Streams Messaging Manager(SMM)中配置预警策略。预警策略触发时,SMM将创建预警。...导航到Alerts窗口时,将显示“ 预警概述”页面,如下图所示: ? 您可以在“ 历史记录”页面上查看直到该日期为止系统中发生的预警的列表 。...SMM使用以下预定义的通知程序集: • EMAIL • HTTP 管理预警策略和通知程序 您可以使用SMM来管理和监视环境中的所有警报策略和通知程序。...仅当通知程序未映射到警报策略时,才可以删除该通知程序。 创建警报策略 您可以使用SMM在您的环境中创建警报策略。 更新警报策略 您可以使用SMM更新环境中的警报策略。

    94920

    年底总结一下Python WEB最好用的几个框架,让你有一个系统的了解

    Django Django的主要原则是在时间上发展任何复杂的东西。...它最初是为内容管理系统开发的,但其丰富的功能(包括但不限于模板,自动数据库生成,数据库访问层,自动管理界面生成)非常适合其他类型的Web应用程序。提供用于开发的Web服务器。...Tornado官方只支持Linux和BSD操作系统(Mac OS X和Microsoft Windows仅推荐用于开发)。Tornado的起源是FriendFeed项目,现在由Facebook拥有。...它鼓励遵循REST概念,因此,在使用Falcon进行开发时,您应该考虑映射到HTTP方法的资源和状态转换。Falcon是Python中速度最快的Web框架之一。...此图显示了Python框架出现的Google搜索引擎结果的历史记录: Growler 构建在asyncio之上,受Node.js的Connect和Express框架的启发。

    3.3K80

    为什么 Django 框架持续统治着 Python 开发? | 极客时间

    虽然上手容易,但想学好、用好 Django,还是要费不少力气的,比如: 因为 Django 功能强大,导致很多人自学时要花费很长时间; 遇到复杂问题时,单靠 Django admin 无法满足业务需求;...要在现有企业系统添加管理后台时,感觉无从下手; 其实,Django 各项功能的掌握路径是有迹可循的,对于复杂问题,Django 提供了极好的扩展性来支持定制开发;对已有系统的集成,它也提供了相应解决方案...但在实际工作中,除了功能的实现,系统的性能,可维护性,安全性,自动化的发布,自动化的监控,这些也非常重要。...要做到这一点,不仅需要技术过硬,还需要一定程度的产品能力——资深技术人必备的系统设计和规划能力(这些能力在实际工作中非常重要,但市面上的资料很却少提及)。...,能够设计实现一个中间件; 3、用 Django 为企业现有的系统快速搭建管理后台:ERP、CRM 系统等等; 4、理解精益创业的产品思维:通过分析产品中的核心功能等操作,在 2 天内交付一个功能完备且投入使用的产品

    51930
    领券