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

在django管理中显示来自不同模型的相关字段

在Django管理中显示来自不同模型的相关字段,可以通过以下几种方法实现:

  1. 使用外键关联模型:如果两个模型之间存在外键关系,可以在一个模型中使用ForeignKey字段引用另一个模型,并在管理页面中通过list_display设置需要显示的字段。例如,有两个模型A和B,其中B模型包含一个指向A模型的外键字段,可以在B模型的管理页面中显示A模型的相关字段。
代码语言:txt
复制
from django.db import models

class A(models.Model):
    field1 = models.CharField(max_length=100)
    field2 = models.IntegerField()

class B(models.Model):
    a = models.ForeignKey(A, on_delete=models.CASCADE)
    field3 = models.CharField(max_length=100)

# admin.py
from django.contrib import admin

class BAdmin(admin.ModelAdmin):
    list_display = ('field3', 'a_field1', 'a_field2')

    def a_field1(self, obj):
        return obj.a.field1

    a_field1.short_description = 'Field 1 from A'

    def a_field2(self, obj):
        return obj.a.field2

    a_field2.short_description = 'Field 2 from A'

admin.site.register(B, BAdmin)
  1. 使用中间模型:如果两个模型之间的关系是多对多关系,可以通过定义一个中间模型来表示这种关系,并在中间模型中添加对应的外键字段。然后在管理页面中设置需要显示的字段。同样,通过在list_display中添加相关字段的方法名来显示。
代码语言:txt
复制
from django.db import models

class A(models.Model):
    field1 = models.CharField(max_length=100)
    field2 = models.IntegerField()

class B(models.Model):
    field3 = models.CharField(max_length=100)
    a = models.ManyToManyField(A, through='AB')

class AB(models.Model):
    a = models.ForeignKey(A, on_delete=models.CASCADE)
    b = models.ForeignKey(B, on_delete=models.CASCADE)

# admin.py
from django.contrib import admin

class ABInline(admin.TabularInline):
    model = AB

class BAdmin(admin.ModelAdmin):
    list_display = ('field3', 'a_field1', 'a_field2')
    inlines = [ABInline]

    def a_field1(self, obj):
        return obj.a.field1

    a_field1.short_description = 'Field 1 from A'

    def a_field2(self, obj):
        return obj.a.field2

    a_field2.short_description = 'Field 2 from A'

admin.site.register(B, BAdmin)
  1. 使用属性方法:如果两个模型之间没有直接的关联关系,可以在其中一个模型中定义一个属性方法,该方法返回与另一个模型相关的字段值,并在管理页面中通过list_display显示该属性方法的返回值。同样,通过在list_display中添加属性方法的方法名来显示。
代码语言:txt
复制
from django.db import models

class A(models.Model):
    field1 = models.CharField(max_length=100)
    field2 = models.IntegerField()

class B(models.Model):
    field3 = models.CharField(max_length=100)

    def a_field1(self):
        return A.objects.get(b=self).field1

    a_field1.short_description = 'Field 1 from A'

    def a_field2(self):
        return A.objects.get(b=self).field2

    a_field2.short_description = 'Field 2 from A'

# admin.py
from django.contrib import admin

class BAdmin(admin.ModelAdmin):
    list_display = ('field3', 'a_field1', 'a_field2')

admin.site.register(B, BAdmin)

无论采用哪种方法,都可以在Django管理中显示来自不同模型的相关字段。这样可以方便地查看和管理模型之间的关联数据。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 弹性 MapReduce(EMR):https://cloud.tencent.com/product/emr
  • 人工智能机器学习平台(AI Lab):https://cloud.tencent.com/product/tia
  • 腾讯云物联网开发平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发平台(Serverless Framework):https://cloud.tencent.com/product/sf
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(TBaaS):https://cloud.tencent.com/product/tbaas
  • 腾讯云大数据开发平台(DataWorks):https://cloud.tencent.com/product/dw
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django admin 根据choice字段选择不同显示不同页面方式

之自定义用户权限(自定义RBAC组件) RBAC组件 rbac 组件一般我们用于权限校验,帮助我们更好管理用户认证信息,不同用户权限不同,访问界面展示也不相同 什么是权限: 一个含有正则表达式...class User(models.Model): class Meta: # 此处设置 admin 显示名称 verbose_name = verbose_name_plural...任何利用中间件和自定义模块 传输和获取 当前用户权限信息 # 通过自定义 middleware 模块 setting 中加入,引入中间件 from django.utils.deprecation...动态显示菜单权限 动态获取显示菜单,注意本次显示是后台操作 需要获取当前用户权限信息,获取 url 和 是否为菜单,以及所带 icon 图标。因为设计到传值问题,于是我们产生了自定过滤器。...以上这篇django admin 根据choice字段选择不同显示不同页面方式就是小编分享给大家全部内容了,希望能给大家一个参考。

2.9K10

django 模型计算字段实例

verbose_name='姓') given_name = models.CharField(max_length=20, verbose_name='名') def name(self): # 计算字段显示修改页面只能定义只读字段...= '全名' # 用于显示名字 , 没有这个,字段标题将显示'name' def __str__(self): return "%s %s " % (self.family_name,...(app.PersonAdmin),第二个是这个类管理模型实例(Person) return '%s,%s' % (self.family_name, self.given_name)...(Person, PersonAdmin) 补充知识:django如何在 search_fields 包含外键字段 search_fields中加入一个外键名字是不能查询,要写成(外键名__外键字段名...,而不是电脑分辨率,就可以搜索'手机 分辨率' 以上这篇django 模型计算字段实例就是小编分享给大家全部内容了,希望能给大家一个参考。

4.4K20
  • Django 2.1.7 Admin管理后台 - 注册模型、自定义显示列表字段

    、添加、修改、删除数据,开发这些重复功能是一件单调乏味、缺乏创造力工作,为此,Django能够根据定义模型类自动地生成管理模块。...使用Django管理模块,需要按照如下步骤操作: 1.管理界面本地化 2.创建管理员 3.注册模型类 4.自定义管理页面 1.管理界面本地化 本地化是将显示语言、时间等使用本地习惯,这里本地化就是进行中国化...3.注册模型类 登录后台管理后,默认没有我们创建应用定义模型类,需要在自己应用admin.py文件中注册,才可以在后台管理中看到,并进行增删改查操作。...列表页中点击"增加"可以进入增加页,Django会根据模型不同,生成不同表单控件,按提示填写表单内容后点击"保存",完成数据创建,创建成功后返回列表页。...4.自定义管理页面 列表页只显示出了ServerInfo object,对象其它属性并没有列出来,查看非常不方便。 Django提供了自定义管理页面的功能,比如列表页要显示哪些值。

    2.8K40

    Django大型项目中django性能模型字段primary_key

    默认表单部分将是包含这些选项选择框,而不是标准文本字段。 每个元组第一个元素是要在模型上设置实际值,第二个元素是人类可读名称。...,然后引用它,但在模型定义选择和每个选择名称可以使用它类中保留所有这些信息,并帮助引用这些选择(例如,Student.SOPHOMORE将在导入学生模型任何位置工作)。...如果没有为模型任何字段指定主键_Key=True,Django将自动添加一个字段来保存主键,因此不需要在任何字段上设置主键_Key=True,除非想覆盖默认主键行为。...自动创建主键字段类型可以每个应用程序AppConfig default_auto_field中找到,或者field配置全局指定default_auto_field def user_directory_path...接受与DateField相同自动填充选项。 此字段默认表单部分是TimeInput。一些JavaScript快捷方式已添加到管理

    2K20

    新增非空约束字段不同版本演进

    看起来有些奇怪,因为若字段允许NULL,其默认值就是NULL,不用显示声明,可以创建一个无DEFAULT NULL新增字段再查看desc表结构,就可以证明这点。...这种新增非空约束字段不同版本确实有一些细节变化,下面做一些简单测试。...11.2.0.1库,可以新增字段,表已存记录该值确实为空,即允许一个有NOT NULL约束字段包含NULL值。 ?...NULL约束字段,但报错信息变了,ORA-01758: table must be empty to add mandatory (NOT NULL) column,这个错误号之前版本有定义,不是新号...我们再看下官方文档描述,11g对于新增默认值字段描述部分,明确指出NOT NULL约束包含默认值情况下,是将默认值存储于数据字典。 ?

    3.1K10

    Django管理应用程序高级配置BookInstance模型运用【Django

    Django管理应用程序 Django管理应用程序可以使用模型自动构建可用于创建、查看、更新和删除记录站点区域。这可以开发过程节省大量时间,使测试模型和查看是否有正确数据变得容易。...Django项目只建议用于内部数据管理(也就是说,仅适用于组织管理员或内部人员),因为以模型为中心方法不一定是所有用户最佳界面,并且暴露了许多关于模型不必要细节。...向记录添加相关字段以允许内联编辑(例如,创建作者记录时添加添加和编辑书本记录功能)。...,我们无法直接指定列表_显示基因字段,因为它是一个ManyToManyField(Django可以防止这种情况,因为这样做会产生大量数据库访问“成本”)。...BookInstance模型 BookInstance模型,我们有相关书籍(信息名称、打印和id),它们将可用(状态、due_back)。

    1.7K20

    脚本单独使用djangoORM模型详解

    有时候测试django中一些模块时,不想重新跑一整个django项目,只想跑单个文件,正好写在if __name__ == ‘__main__’: 这样也不会打扰到正常代码逻辑 方法 正常方法 大家都知道方法就是...’python manage.py shell’,当然我知道这可能不是你需要; 更好用方法 脚本import模型前调用下面几行即可: import os, sys BASE_DIR = os.path.dirname...))) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dj_tasks.settings") # 你djangosettings文件 接下来再调用...导入models时候,还没有django对应环境下导入 这里导入顺序很重要 import os import django os.environ.setdefault('DJANGO_SETTINGS_MODULE...以上这篇脚本单独使用djangoORM模型详解就是小编分享给大家全部内容了,希望能给大家一个参考。

    4.9K10

    PHPStorm 代码 CSDN 文章显示相关 js “onclick” 代码失效情况!

    编辑器复制了源码; > 然后直接粘贴在 csdn MarkDown 编辑器(当然是代码块!)...; > 文章保存发表后,发现直接复制博客代码内容粘贴在自己 PHPStorm 时; > 排查问题发现 “onclick” 这个单词 “o” 会失效; > 解决方法也不难,就是重新打出这个单词呗...更奇葩现象是,即便我 MarkDown 编辑器手动打出这个单词,保存发布后依然存在问题!...【注意】 在此提示一下,其实文章前期,并没有出现这种问题, 因为有段时间我也是自己复制所写过源码,但是大概在三个月前出这种情况 也是超级一脸懵逼… 附录【2020-07-13】 ①...推测 本人推测可能是这些单引号双引号对 js代码产生影响 因为单纯 只有 “onclick” 这个词是没问题哦 希望不是我操作出现BUG,不然可就丢人咯,哈哈哈 … ?

    3.8K20

    自定义 Django 管理界面多对多内联模型

    问题背景 Django 管理界面,用户可以使用内联模型管理一对多关系。但是,当一对多关系是多对多时,Django 提供默认内联模型可能并不适合。...例如,如果存在一个产品模型和一个发票模型,并且产品和发票之间是多对多关系,那么发票管理界面Django显示一个表格,其中包含所有产品及其对应复选框。...这种形式内联模型对于管理少量产品还可以接受,但是如果产品数量很多,那么这种内联模型就会非常不美观和难以使用。2. 解决方案为了解决这个问题,我们可以自定义多对多内联模型显示方式。... formset_factory() 函数,指定 model 参数为内联模型模型类,并指定 fields 参数为内联模型需要显示字段。...下面是一个示例代码,演示了如何自定义多对多内联模型显示方式:from django.contrib import adminfrom django.contrib.admin.utils import

    11510

    django admin详情表单显示添加自定义控件实现

    开发中有需求详情显示里外键字段内容,并且添加按钮弹窗内容,以及按钮跳转内容。...添加一个字段字段中有一个widget参数,我们可以在其中设置控件,我在里面添加了一个input类型,TextInput对象参数attrs传入是一个字典,我们可以在里面像写html一样写相关css...这个时候我们就可以详情内看见button了,但是相对应detail表单添加后,add表单也会出现一个button,这个不是我们想要,所以就要想办法让button只存在于detail界面...而弹出窗口值获取可以form添加一个hidden字段,value为我们想要获取值,js取值赋值即可。...刷新页面即可; 以上这篇django admin详情表单显示添加自定义控件实现就是小编分享给大家全部内容了,希望能给大家一个参考。

    4.9K20

    自噬相关基因模型非小细胞肺癌预后意义

    TCGA-LUAD(C)和TCGA-LUSC(D)套索模型中最优参数(lambda)选择。(E) TCGA-LUAD队列22个基因遗传改变。...同时GSEA分析(图D)显示,改变基因在几种常见途径显著富集。我们发现高风险组与细胞周期、p53信号通路、DNA复制和泛素介导蛋白水解显著相关。...同时,低风险组与mTOR、VEGF、胰岛素信号通路以及溶酶体呈负相关。 ? 2.3 独立肺癌样本预后特征基因验证 这部分是对之前利用TCGA数据所构建模型GEO数据集进行验证。...即使该混合型肺癌样本(图D和F),风险评分也表现良好。 ? 109名肺癌患者(GSE3141)BILD样本,风险较小患者比生存风险高患者(图A、C和E)。...2.4 个性化预测模型 个性化预测主要是通过列线图这种稳健工具,综合多个风险因素,来定量确定个人在临床环境风险。

    1.1K20

    【数据库差异研究】别名与表字段冲突,不同数据库where处理行为

    有别名 使用表字段 使用子查询字段 ORACLE 无别名 使用表字段 使用子查询字段 PG 有别名 使用表字段 使用子查询字段 PG 无别名 PG报错 PG报错 ☪️1 问题描述...一、当单层查询发生别名与表字段重名冲突时,不同数据库where处理行为是怎样呢?...二、当嵌套查询发生别名与表字段重名冲突时,不同数据库where处理行为是怎样呢? 详见后文。...结论 嵌套查询: 说明嵌套查询中子查询有别名,在内层查询别名和表字段发生重名冲突时,内层 where 中使用是表字段而非别名;外层 where 中使用是子查询结果字段。...说明嵌套查询中子查询无别名,PG报错,但对于高斯数据库: 嵌套查询中子查询有别名,在内层查询别名和表字段发生重名冲突时,内层 where 中使用是表字段而非别名;外层 where 中使用是子查询结果字段

    8910

    模型添加到场景 - 环境显示3D内容

    最后几节,我们能够检测到一个平面并显示一个焦点方块,以帮助我们为模型指定一个位置。我们也熟悉了热门测试和世界变换。现在,我们拥有显示虚拟对象所需所有工具。...本教程,我们将学习如何检索模型并使用按钮触发器将其呈现在场景。一旦显示,我们将隐藏焦点方块。...我们刚刚完成了这个功能,现在,我们准备点击按钮时在场景显示我们模型。...回到ViewController + ObjectAddition并在getModel函数,我们首先为比例声明一个变量,然后根据模型设置不同值。...焦点方块隐藏/显示选项 当我们屏幕上显示模型时,我们仍然看到焦点方块干扰了我们漂亮模型。如果我们安置后隐藏它,你怎么说?

    5.5K20

    Django 3.1 官网学习路线

    字段还可以有各种可选参数;本例,我们将投票默认值设置为 0。 最后,请注意使用外键定义了关系。这告诉 Django 每个选择都与一个问题相关。...不同模型字段类型(DateTimeField、CharField)对应于适当 HTML 输入小部件。每种类型字段都知道如何在 Django 管理显示自己。...通常,您需要定制管理表单外观和工作方式。可以通过注册对象时告诉 Django 所需选项来实现。 通过重新排列编辑表单字段来了解其工作原理。...“添加选择”表单如下所示: 该表单,“Question”字段是一个选择框,包含数据库每个问题。Django 知道一个外键应该在管理中表示为一个框。我们例子,目前只存在一个问题。...使用表格内联(而不是 StackedInline),相关对象将以更紧凑、基于表格格式显示: 自定义管理员更改列表 现在问题管理页面看起来不错了,让我们对“更改列表”页面做一些调整——这个页面显示系统所有问题

    8.2K10

    使用 Django admin 定制后台,丰富自己网站后台管理系统

    admin 注册 首先,如果要在 Django 后台显示应用模型,必须在应用所在 admin.py 文件中注册模型。...(这里是 Author) 创建一个模型管理类,继承 admin.ModelAdmin,这个类参数后面详细介绍 注册模型管理类 使用装饰器来注册 其实上面的过程可以把第2、3步结合起来,创建模型管理同时注册类...ModelAdmin 详细参数 查看源码 为了更好了解 Django 管理类有哪些基本属性,我们可以去 Django 源码查找这个类源代码,看一下它有哪些默认属性和方法。...exclude 这个属性是用来设置不需要展示字段,接受一个元祖或者列表,只要设置了字段就不会在后台显示,比如这个例子我不想要后台显示文章阅读量。...fields 属性是与 exclude 属性相对字段,这个字段包含是需要在后台显示模型字段,所以一般他们不同时出现。

    3.1K10

    django后台管理-admin

    0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册appadmin文件中导入模型然后注册模型 admin.site.register(导入模型类...) 注册方式二该方法是Django1.7版本新增功能: from django.contrib import admin from blog.models import Blog #Blog模型管理器...可以settings.py设置: LANGUAGE_CODE = 'zh-CN' TIME_ZONE = 'Asia/Shanghai' 1.8版本之后language code设置不同: LANGUAGE_CODE...#listdisplay设置要显示列表字段(id字段Django模型默认主键) list_display = ('id', 'caption', 'author', 'publish_time...一般ManyToManyField多对多字段用过滤器;标题等文本字段用搜索框;日期时间用分层筛选。 过滤器如果是外键需要遵循这样语法:本表字段__外键表要显示字段

    88010

    Django Admin后台管理

    Django通过简单配置就可以实现数据模型后台管理。一般管理界面是给系统管理员使用,以完成数据CURD。 1.本地化 将语言和时区本地化,修改settings.py文件。...登陆后就会看到我们注册模型类,点进去后就可以实现对数据库CURD了。 4.自定义管理页面 Django提供了自定义管理页面的功能,是通过自定义模型管理类来实现。..., SchoolInfoAdmin) admin.site.register(StudentInfo) 显示效果如下 还可以通过模型管理list_display属性来自定义显示列。...list_display项可以是模型字段,也可以是模型方法(该方法必须有返回值) 修改应用下models.pySchoolInfo类 # 学校模型类 class SchoolInfo(models.Model...url(r'^tinymce/', include('tinymce.urls')), # 富文本编辑器 随后就可在模型类中使用该字段应用models.py添加如下内容 from django.db

    2.8K10

    马哥金牌分享 | 十分钟学会用Django快速搭建一个blog

    采用了MVC框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下一些以新闻内容为主网站,即是CMS(内容管理系统)软件。并于2005年7月BSD许可证下发布。...但是Django,控制器接受用户输入部分由框架自行处理,所以Django 里更关注模型(Model)、模板(Template)和视图(Views),称为MTV模式。...1.1 Django结构模型 层次 职责 模型(Model)数据存取层 处理与数据相关所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间关系等。...视图(View)表现层 处理与表相关决定: 如何在页面或其他类型文档中进行显示。 模板(Template),业务逻辑层 存取模型及调取恰当模板相关逻辑。模型与模板桥梁。...2.配置admin.py之前,需要先了解一下admin用法 需要继承admin.ModelAdmin list_display:admin 后台显示字段 search_fields:admin 后台查询字段

    2.4K51
    领券