Django Admin后台从一个页面同时编辑多个模型

news/2024/9/19 4:51:54/ 标签: django, java, 前端

要从Django Admin后台一个页面同时编辑多个对象,我们需要使用内联。

假设你有一个Category模型,并且需要在Admin后台Category编辑页面,同时编辑Villain模型。你可以在admin.py中使用内联:

class VillainInline(admin.StackedInline):model = Villain
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):...inlines = [VillainInline]

你可以在后台Category编辑页面内部看到添加和编辑Villain的表单。如果Inline包含很多个模型,建议使用使用StackedInline,如果字段较少可以使用TabularInline。

显示效果如下:

以下是来自文心一言的补充:

在您提供的代码片段中,您定义了一个`VillainInline`类,该类继承自`admin.StackedInline`,用于在Django管理界面中将`Villain`模型作为内联(inline)表单展示在`Category`模型的编辑页面上。然后,您注册了一个`CategoryAdmin`类来管理`Category`模型,并在该类中通过`inlines`属性指定了`VillainInline`,这样当编辑`Category`实例时,就可以同时编辑与该`Category`相关联的`Villain`实例了。

这里有几个需要注意的点:

1. **模型关系**:确保`Villain`模型与`Category`模型之间存在一个合适的外键关系。通常,`Villain`模型中应该有一个指向`Category`的外键字段,比如`category = models.ForeignKey(Category, on_delete=models.CASCADE)`。这样,Django才能理解如何将`Villain`实例作为内联表单展示在`Category`的编辑页面上。

2. **内联表单的额外配置**:`VillainInline`类还可以包含其他配置,比如`extra`(默认显示的额外内联表单数量)、`max_num`(允许的最大内联表单数量)、`formfield_overrides`(用于覆盖内联表单字段的默认设置)等。这些配置可以根据您的具体需求进行设定。

3. **CategoryAdmin的其他配置**:`CategoryAdmin`类还可以包含其他配置,比如`list_display`(在列表视图中显示的字段)、`search_fields`(允许搜索的字段)、`filter_horizontal`或`filter_vertical`(用于多对多字段的过滤器)等。这些配置可以让管理界面更加符合您的需求。

4. **注册和展示**:通过`@admin.register(Category)`装饰器,您已经成功地将`CategoryAdmin`类注册为`Category`模型的管理类。现在,当您访问Django管理界面中的`Category`模型时,就可以看到内联的`Villain`表单了。

5. **权限和访问控制**:请确保您的用户具有编辑`Category`和`Villain`模型的权限,否则他们可能无法看到或编辑这些内联表单。

6. **测试**:在部署到生产环境之前,请确保在开发环境中充分测试这些功能,以确保它们按预期工作。

下面是一个简化的示例,展示了如何在`Villain`模型中设置外键,并简要地配置了`VillainInline`和`CategoryAdmin`:

from django.db import models  
from django.contrib import admin  class Category(models.Model):  name = models.CharField(max_length=100)  class Villain(models.Model):  name = models.CharField(max_length=100)  category = models.ForeignKey(Category, on_delete=models.CASCADE)  class VillainInline(admin.StackedInline):  model = Villain  extra = 1  # 默认显示一个额外的内联表单  @admin.register(Category)  
class CategoryAdmin(admin.ModelAdmin):  inlines = [VillainInline]  list_display = ('name',)  # 在Category列表中显示name字段

在这个示例中,我们为`Category`和`Villain`模型设置了简单的字段,并在`Villain`模型中定义了一个指向`Category`的外键。然后,我们定义了`VillainInline`和`CategoryAdmin`类,并将`VillainInline`添加到`CategoryAdmin`的`inlines`属性中。最后,我们通过`list_display`属性在`Category`的列表视图中添加了`name`字段的显示。


http://www.ppmy.cn/news/1520592.html

相关文章

光盘安全隔离与信息单向导入系统-信刻

信刻从用户需求出发,为更多用户提供安全可靠的跨网数据单向导入/导出光盘摆渡系统解决方案,解决内外网数据交换的问题,确保数据交换过程的安全性。 公司所研发出的光盘安全隔离与信息单向导入系统依托软硬件相结合的技术,集策略摆…

表外连接,数据去重,存在问题|解决

一、限制去重 1、distinct 整行去重 distinct your_column,.... 问题 :当连接log表,需要统计的主键可能重复 (其他列可以相同,只要有一列不同,就会统计)。 2、group by 当前字段全部去重 group by …

解决 Linux 上的 SSH 登录缓慢问题

如果您必须等待很长时间才能看到 SSH 密码提示&#xff0c;则可能存在多种问题。要解决 SSH 登录缓慢的根本原因&#xff0c;您可以运行带有 -vvv 选项的 ssh 命令&#xff0c;该命令将向您显示 SSH 登录期间幕后发生的情况。 $ ssh -vvv user<ssh-server>以下是 SSH 登…

猫粮有什么缺陷?主食罐头的好处有哪些?高分猫罐头大推荐

主食罐头是猫咪必需品吗&#xff1f;这应该是养猫新手都有过的疑惑。有的铲屎官可能觉得猫粮猫条小零食就足够了&#xff0c;无需再购置主食罐头。我家之前也是喂干粮的&#xff0c;慢慢地转为全罐喂养&#xff0c;在体验过两种喂养方式后&#xff0c;我只想说给猫猫买主食罐头…

LINUX常用命令-docker-Kubernetes

LINUX常用命令-docker-Kubernetes docker docker run: 创建并启动一个容器。docker ps: 列出当前运行中的容器。docker stop [container_id]: 停止一个运行中的容器。docker start [container_id]: 启动一个已停止的容器。docker rm [container_id]: 删除一个容器。docker im…

Robotics: computational motion planning 部分笔记—— week 1 graph-based

grassfire algorithm 四周扩散性&#xff1b;从终点开始按照相邻最小距离格子移动 Dijkstra’s Algorithm 标明从起点开始的所有点的最短距离&#xff08;从上一节点继承&#xff09;&#xff0c;直到终点 A* Algorithm 带有启发性的&#xff0c;给出距离估计&#xff0c…

DC-DC双向同步升降压35V宽频展频恒压恒流控制器QFN32L

概述&#xff1a; PC1035 是一款同步升降压控制器&#xff0c;适用于驱动高效电源转换器中的 MOSFET 或氮化镓(GaN)等功率器件。它支持高达 35V 的宽输入和输出电压范围&#xff0c;并可在降压、升降压和升压模式之间无缝转换。PC1035 集成了具有 UVLO 保护功能的上管和下管栅…

停止和删除所有 Docker 容器的详细指南

在 Docker 管理中&#xff0c;停止和删除容器是常见的操作&#xff0c;特别是在清理资源或维护环境时。Docker 提供了多种命令来管理容器&#xff0c;包括停止和删除。本文将详细介绍如何停止和删除所有 Docker 容器&#xff0c;包括常见命令的用法及其操作步骤。 一、理解 Doc…

swf怎么转成mp4?swf转mp4,掌握这3招就够了!

在制作动画时&#xff0c;大家经常会用到SWF&#xff08;Shockwave Flash&#xff09;格式。不过有时候&#xff0c;为了让swf格式的软件在播放器上播放&#xff0c;就需要把swf转mp4格式&#xff0c;方便分享和播放了。今天我就来给大家介绍三个简单易行的方法&#xff0c;让你…

在线文档翻译工具哪个好?不妨试试这5款文档翻译软件

当悠长假期的余温尚存&#xff0c;而工作的节奏却已然加速&#xff0c;语言的障碍常让我们在阅读外文文档时感到头重脚轻。 面对着密密麻麻的英文资料&#xff0c;心中不禁涌起一股无力感。但别担心&#xff0c;科技的力量又一次为我们带来了帮助——在线文档翻译工具。 那么…

极盾故事|某金融租赁机构应用数据保护新策略:“动态脱敏”“二次授权”

数据的流通使用是创新的动力&#xff0c;但安全和合规是不可逾越的底线。企业如何在这三者之间找到平衡点&#xff1f; 极盾科技&#xff0c;助力某金融租赁机构&#xff0c;基于极盾觅踪构建应用数据动态脱敏系统&#xff0c;实现10&#xff0b;核心应用系统的统一管理&#x…

51单片机-串口通信关于SBUF的问题

在8051单片机中&#xff0c;SBUF&#xff08;串行数据缓冲器&#xff09;寄存器用于串口通信的数据发送和接收。以下是如何将数据写入SBUF以及在代码中如何处理SBUF的详细分析&#xff1a; 串口通信的基本流程 发送数据&#xff1a; 当你想要通过串口发送数据时&#xff0c;需…

ArcGIS中利用DEM提取水系线

一、数据来源 本文所用到的数字高程数据采用30米分辨率的ASTER GDEM 30M分辨率数字高程数据&#xff0c;数据来源于中国科学院计算机网络信息中心地理空间数据云平台&#xff08;http://www.gscloud.cn&#xff09;。 该网站数据的下载是按不同比例尺的条带号下载的&#xff0c…

自然语言处理系列五十三》文本聚类算法》文本聚类介绍及相关算法

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列五十三文本聚类算法》文本聚类介绍及相关算法K…

51单片机-矩阵键盘(基于LC602)

时间&#xff1a;2024.8.30 作者&#xff1a;Whappy 目的&#xff1a;手撕51&#xff08;第二遍&#xff09; 代码&#xff1a; main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h" #include "MatrixKey.h"unsigned…

传统CV算法——特征匹配算法

Brute-Force蛮力匹配 Brute-Force蛮力匹配是一种简单直接的模式识别方法&#xff0c;经常用于计算机视觉和数字图像处理领域中的特征匹配。该方法通过逐一比较目标图像中的所有特征点与源图像中的特征点来寻找最佳匹配。这种方法的主要步骤包括&#xff1a; 特征提取&#xff…

无人机+应用综合实训室解决方案

随着无人机技术的飞速发展&#xff0c;其在航拍、农业、环境监测、物流运输等多个领域展现出巨大的应用潜力。为了满足职业院校及企业对无人机应用技术型人才的培养需求&#xff0c;唯众紧跟市场趋势&#xff0c;推出了全面且详尽的《无人机应用综合实训室解决方案》。本方案旨…

Spring 学习笔记

概述 Spring 是一个企业级 J2EE 应用开发一站式解决方案&#xff0c;其提供的功能贯穿了项目开发的表现层、业务层和持久化层&#xff0c;同时&#xff0c;Spring 可以和其他应用框架无缝整合 Spring 的特性包括以下几个方面&#xff1a; 轻量&#xff1a;Spring 是一个轻量…

JavaScript初级——BOM

1、BOM —— 浏览器对象模型 —— BOM可以使我们通过 JS 来操作浏览器 —— 在BOM中为我们提供了一组对象&#xff0c;用来完成对浏览器的操作 2、BOM对象&#xff1a; ① Window —— 代表的是整个浏览器的窗口&#xff0c;同时 window 也是网页中的全局对象。 ② Navig…

MySQL面试题精简版

目录 SQL内连接与外连接的区别 drop、delete与truncate区别 UNION与UNION ALL的区别 CHAR和VARCHAR的区别 MyISAM和InnoDB的区别 数据库中的锁 数据库三大范式 数据库特性 并发事务带来的问题 数据库事务隔离级别 索引的分类 索引的创建原则 索引失效的情况 MySQ…