Django admin管理工具TabularInline表格内联

详解

TabularInline 是 Django Admin 中的一个内联模型选项,用于在父模型的编辑页面中以表格形式显示关联的子模型对象。下面是对 TabularInline 的一些详解:

  1. 显示方式TabularInline 以表格的形式显示子模型对象。每个子模型对象将以一行的形式展示,显示相关字段的值。

  2. 编辑和新增 :通过 TabularInline,您可以在父模型的编辑页面中同时编辑和新增与之关联的子模型对象。您可以通过表格的行来编辑现有子模型对象,也可以通过表格底部的空白行来新增新的子模型对象。

  3. 嵌套显示 :如果在子模型中还有其他的外键关联模型,您可以使用嵌套的 TabularInline 来进一步显示和编辑这些关联的模型对象。

  4. 指定数量 :您可以通过设置 extra 属性来指定要显示的初始表格行数。

下面是一个示例,演示如何使用 TabularInline 来在 Django Admin 中显示和编辑关联的子模型对象:

python 复制代码
from django.contrib import admin
from .models import ParentModel, ChildModel

class ChildModelInline(admin.TabularInline):
    model = ChildModel

class ParentModelAdmin(admin.ModelAdmin):
    inlines = [ChildModelInline]

admin.site.register(ParentModel, ParentModelAdmin)

在上述示例中,我们定义了一个名为 ChildModelInlineTabularInline 类,并将它添加到 ParentModelAdmininlines 属性中。这样,当在 Django Admin 后台编辑 ParentModel 对象时,将在同一个页面上显示和编辑相关的多个 ChildModel

通过使用 TabularInline,您可以更方便地在 Django Admin 中管理父子模型之间的关系,提供了更直观和高效的界面来处理关联对象的增删改查操作。

案例

models.py

一个name 对应多个access_key_id

py 复制代码
class Name(models.Model):
    name = models.CharField(max_length=100)
    # 其他字段...
    class Meta:
        verbose_name = "名字"
        verbose_name_plural = "名字"

    def __str__(self):
        return self.name

class AccessKey(models.Model):
    access_key_id = models.CharField(max_length=50)
    name = models.ForeignKey(Name, on_delete=models.CASCADE)
    # 其他字段...
    class Meta:
        verbose_name = "密钥ID"
        verbose_name_plural = "密钥ID"

    def __str__(self):
        return self.access_key_id

admin.py

py 复制代码
from .models import Name,AccessKey

class AccessKeyInline(admin.TabularInline):
    model = AccessKey

class NameAdmin(admin.ModelAdmin):
    inlines = [AccessKeyInline]
    
admin.site.register(Name, NameAdmin)
admin.site.register(AccessKey)

最终效果如下

一个name可以对应多个key id

一个key只对应一个name名字

相关推荐
LeenixP23 分钟前
RK3576-Debian12删除userdata分区
linux·运维·服务器·数据库·debian·开发板
知行合一。。。25 分钟前
Python--03--函数入门
android·数据库·python
X***078835 分钟前
理解 MySQL 的索引设计逻辑:从数据结构到实际查询性能的系统分析
数据库·mysql·sqlite
爬山算法39 分钟前
Hibernate(31)Hibernate的原生SQL查询是什么?
数据库·sql·hibernate
Yuiiii__40 分钟前
一次并不简单的 Spring 循环依赖排查
java·开发语言·数据库
-曾牛41 分钟前
Yak语言核心基础:语句、变量与表达式详解
数据库·python·网络安全·golang·渗透测试·安全开发·yak
爱吃羊的老虎1 小时前
【大模型】向量数据库:Chroma、Weaviate、Qdrant
数据库·语言模型
数据大魔方1 小时前
【期货量化实战】跨期套利策略:价差交易完整指南(TqSdk源码详解)
数据库·python·算法·github·程序员创富
l1t1 小时前
NineData第三届数据库编程大赛:用一条 SQL 解数独问题我的参赛程序
数据库·人工智能·sql·算法·postgresql·oracle·数独
施嘉伟2 小时前
一次生产环境 SQL 不走索引的排查过程
数据库·sql