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

2024-09-04 01:12

本文主要是介绍Django Admin后台从一个页面同时编辑多个模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

要从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`字段的显示。

这篇关于Django Admin后台从一个页面同时编辑多个模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134575

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码