5 Django系列之通过list_display展示多对多与外键内容在admin-web界面下

list_display展示多对多关系的内容

表结构关系
表一

class Server(models.Model):asset = models.OneToOneField('Asset')created_by_choices = (('auto','Auto'),('manual','Manual'),)created_by = models.CharField(choices=created_by_choices,max_length=32,default='auto') #auto: auto created,   manual:created manuallyhosted_on = models.ForeignKey('self',related_name='hosted_on_server',blank=True,null=True) #for vitural servermodel = models.CharField(u'型号',max_length=128,null=True, blank=True )# 若有多个CPU,型号应该都是一致的,故没做ForeignKeyraid_type = models.CharField(u'raid类型',max_length=512, blank=True,null=True)os_type  = models.CharField(u'操作系统类型',max_length=64, blank=True,null=True)os_distribution =models.CharField(u'发型版本',max_length=64, blank=True,null=True)os_release  = models.CharField(u'操作系统版本',max_length=64, blank=True,null=True)salt_minion_id = models.CharField(u'salt minion id',max_length=254,blank=True,null=True)create_date = models.DateTimeField(blank=True, auto_now_add=True)update_date = models.DateTimeField(blank=True,null=True)class Meta:verbose_name = '服务器'verbose_name_plural = "服务器"def __str__(self):return '%s sn:%s' %(self.asset.name,self.asset.sn)

表二

class SaltGroup(models.Model):'''saltstack 的minion组管理'''group_name = models.CharField(u'组名',max_length=50)host_target = models.ManyToManyField(Server,verbose_name='组成员',null=True,blank=True)whether_create = models.IntegerField(u'是否创建了组在saltstack配置文件里',default=0) #0:没有创建,1:表示创建了class Meta:db_table = "saltstack组"

然后我们在admin配置文件这么写:

class Saltstack_GroupAdmin(admin.ModelAdmin):list_display = ['group_name','salt_minion_id']  # 这里需要注意的是,salt_minion_id是我们要在前端展示的内容,自己定义的def  salt_minion_id(self,obj):'''这个方法就是用来对salt_minion_id这个字段做处理,把我们需要展示的前端内容截取出来。需要注意的是,方法名必须要和在list_display里面的一致,这样才可以调用。'''print(obj.host_target.salt_minion_id)return obj.host_target.salt_minion_id   # host_target是我们SaltGroup表中多对多的字段,salt_minion_id是刚才我们自定义的字段,salt_minion_id.short_description = "Minion's ID "     # 对salt_minion_id这个做个简短的title。admin.site.register(models.SaltGroup,Saltstack_GroupAdmin),

好了至此,重启下django即可在django admin界面下使用了

list_display展示外键内容

首先看看表结构关系
表一

class DockerContainers(models.Model):'''用来记录docker容器信息的'''Real_host_ip = models.ForeignKey(DockerOfHost,verbose_name='Docker宿主机IP')  # 这段是外键Container_id = models.CharField(u'容器ID',max_length=400,primary_key=True,unique=True)Container_name = models.CharField(u'容器名字',max_length=300,null=True,blank=True)Container_image = models.CharField(u'容器镜像',max_length=300)Container_Image_id = models.CharField(u'镜像ID',max_length=500,null=True,blank=True)Command = models.CharField(u'运行的命令',max_length=300,null=True,blank=True)Created = models.CharField(u'创建时间',max_length=200)Status = models.CharField(u'运行状态',max_length=100,null=True,blank=True)Port = models.CharField(u'容器端口',max_length=1000,null=True,blank=True)SizeRw = models.IntegerField(null=True,blank=True)SizeRootFs = models.IntegerField(null=True,blank=True)Host_config = models.CharField(u'主机配置',max_length=1024,null=True,blank=True)Network_settings = models.CharField(u'网络配置',max_length=3000,null=True,blank=True)Mounts = models.CharField(u'挂载目录',max_length=1024,null=True,blank=True)Record_time = models.DateTimeField(u'数据更新时间',auto_now=True)def __str__(self):return "%s:%s"%(self.Real_host_ip,self.Container_id)class Meta:verbose_name = "Docker容器信息"verbose_name_plural = "Docker容器信息"

表二:

class DockerOfHost(models.Model):'''用来记录docker宿主机信息到'''host_ip = models.CharField(u'Docker宿主机IP',max_length=250,unique=True)def __str__(self):return self.host_ip   # 一定要retrun self.ip,这样list_display才能显示class Meta:verbose_name = "Docker宿主机IP"verbose_name_plural = "Docker宿主机IP"

admin.py里的代码如下:

class dockercontainers(admin.ModelAdmin):list_display = ['Real_host_ip','Container_id','Container_name','Container_image','Container_Image_id','Command','Created','Status',\'Port','SizeRw','SizeRootFs','Host_config','Network_settings','Mounts','Record_time']search_fields = ['Container_id','Container_name','Container_image','Status']

其实最关键的一步在于表二里的__str__方法return回来的内容,套用官网的一句话就是:If the field is a ForeignKey, Django will display the str() (unicode() on Python 2) of the related object. If you don’t set list_display, the admin site will display a single column that displays the str() (unicode() on Python 2) representation of each object.

更多资料可以参考官网:https://docs.djangoproject.com/en/1.10/ref/contrib/admin/

转载于:https://www.cnblogs.com/liaojiafa/p/6249459.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧交通day04-特定目标车辆追踪01:总览概述

项目介绍: 运动目标跟踪一直以来都是一项具有挑战性的工作, 也是研究的热点方向. 现阶段, 随着硬件设施 的不断完善和人工智能技术的快速发展, 运动目标跟踪技术越来越重要. 目标跟踪在现实生活中有很 多应用, 包括交通视频监控、运动员比赛分析、智能人机交互 、跟…

Python3之字典生成器结合lambda实现按key/value排序

Python3之字典生成器结合lambda实现按key/value排序 1、先介绍不常见的字典按value排序: dict1 {"g": 2, "f": 1, "a": 6} print(dict1.values()) d1 sorted(dict1.items(), keylambda d: d[1], reverseTrue) # 按字典values倒…

XCode8 App上传AppStore更新

1.在这个网站中https://itunesconnect.apple.com 点击“我的APP” 选取需要更新的app 2.点击加号 版本或平台,填写对应的更新版本 3.配置Xcode项目 1 》注意 上图的 套装ID 就是项目中的 Bundle Identity 必须要一模一样 并且不能修改 》配置相同的Bundle Identity…

智慧交通day04-特定目标车辆追踪02:Siamese网络+单样本学习

1.Siamese网络 Siamese network就是“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的,如下图所示。共享权值意味着两边的网络权重矩阵一模一样,甚至可以是同一个网络。 如果左右两边不共享权值,而是两个不同的神经网…

学习网站(不断更新)

一个师兄给我的在线可编译的网站: http://www.fenby.com/user/me Linux最新内核代码: http://www.kernel.org/如果是拿来学习研究的 Linux早期版本内核代码(简单易学): http://www.oldlinux.org/index_cn.html LDD3例子这个家伙写得非常不错 http://blog.csdn.net/liuhaoy…

CSS如何实现两个a标签元素的文字一个靠左一个靠右,并且能点击分别不同的链接

CSS如何实现两个a标签元素的文字一个靠左一个靠右,并且能点击分别不同的链接 作为一个非专业前端,有时候开发又必须自己写一些简单的前端,在网上有时候不能及时查找到内容,只能自己尝试,如下是实现两个span中的a标签下…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamFC(2016)

目标追踪任务是指在一个视频中给出第一帧图像的bbox的位置,在后续的帧中追踪该物体的任务。 目标追踪不同于目标检测的是: 1、需要给出首帧的标定框。 2、只需要给出标定框,后续的搜索范围往往在上一帧图像的附近。 孪生网络是使用深度学习…

word-break|overflow-wrap|word-wrap——CSS英文断句浅析

---恢复内容开始--- word-break|overflow-wrap|word-wrap——CSS英文断句浅析 一 问题引入 今天在再次学习 overflow 属性的时候,查看效果时,看到如下结果,内容在 div 中国换行了,可是两个 P 元素的内容并没有换行,搜索…

linux内核定时器编程

1.linux内核定时器基本结构和函数 1&#xff09;struct timer_list 一个struct timer_list对应了一个定时器。 #include <linux/timer.h> 以下列出常用的接口&#xff1a; struct timer_list{/*....*/unsigned long expires;//定时器服务函数开始执行时间void (*func…

django ModuleNotFoundError: No module named 'tinymce***'

django ModuleNotFoundError: No module named ‘***’ 1、检查对应的模块是否有安装&#xff0c;可以使用pip list查看 没有安装请执行安装 python -m pip install *** (--user)&#xff0c;某些电脑user没有权限需要加上括号中的 2、如果有安装 请检查python的django配置安…

度量时间差和jiffies计数器

HZ 1、内核通过定时器中断来跟踪时间流 2、时钟中断由系统定时硬件以周期性的间隔产生&#xff0c;这个间隔由内核根据HZ的值设定&#xff0c;HZ是一个与体系结构有关的常数&#xff0c;定义在<linux/param.h>或者该 文件包含的某个子平台相关的文件中。 jiffies 1、…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamRPN(2017)

3.2 SiamRPN(2017) 3.2.1 网络结构 Siam-RPN提出了一种基于RPN的孪生网络结构&#xff0c;由孪生子网络和RPN网络组成&#xff0c;前者用来提取特征&#xff0c;后者用来产生候选区域。其中&#xff0c;RPN子网络由两个分支组成&#xff0c;一个是用来区分目标和背景的分类分…

点绛唇-王禹偁

diǎn jinɡ chn ɡǎn xnɡ 点 绛 唇 感 兴 wnɡ yǔ chēnɡ 王 禹 偁 yǔ hn yn chu &#xff0c; jiānɡ nn yī ji chēnɡ jiā l 。 雨 恨 云 愁 &#xff0c; 江 南 依 旧 称 佳 丽 。 shuǐ cūn y sh &#xff0c; y lǚ ɡū yān x…

ubuntu 18 Cannot find installed version of python-django or python3-django.

ubuntu系统下安装了django&#xff0c;但是启动django项目时报错 Cannot find installed version of python-django or python3-django. 原因&#xff1a; ubuntu大于14版本的应该安装python3-django 解决办法&#xff1a; apt-get install python3-django 如果提示你有几个…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-DaSiamRPN(2018)

DaSiamRPN网络的全称为Distractor-aware SiamRPN&#xff0c;是基于SiamRPN网络结构&#xff0c;提出更好的使用数据&#xff0c;针对跟踪过程的干扰物&#xff0c;利用更好的训练方式是跟踪更加的鲁棒。 DaSiamRPN认识到了现有的目标追踪数据集中存在的不平衡问题&#xff0c…

SyntaxError: Non-ASCII character '\xe9' in file...ubuntu系统下python运行时提示编码格式不正确以及提示No module named xxx

在Ubuntu 18下创建django项目&#xff0c;运行python文件时报错&#xff1a; SyntaxError: Non-ASCII character \xe9 in file /home/image/桌面/django_test/test_proj/ test_proj/settings.py on line 127, but no encoding deared; see http://python.org/dev/ peps/pep-02…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamRPN++(2019)

3.4.1 模型结构 SiamRPN网络结构如下图所示&#xff0c;虚线的两边都是网络结构图&#xff0c;虚线左侧是特征提取网络结构&#xff0c;右侧是RPN结构图。其实SiamRPN的网络结构与SiamRPN网络结构十分相似&#xff0c;而SiamRPN就是在SiamRPN的基础上加入许多的创新点。 SiamR…

lanmp之二 (奇葩问题)

ps&#xff1a;该篇是接 lanmp —— 动静分离 lanmp —— 奇葩问题 话说&#xff0c;在 搭建 bbs.abc.com &#xff08;discuz论坛&#xff09;的 时候。。。。 1、说明&#xff1a;web机器上以前已经有一个 discuz 旧论坛 要做数据迁移&#xff08;改域名/拷贝数据/迁移网站&a…

[已解决]user is not in the sudoers file. This incident will be reported.(简单不容易出错的方式)

linux Ubuntu中报错&#xff0c;XXX is not in the sudoers file. This incident will be reported. 今天在学习的时候&#xff0c;不小心把自己的用户sudo玩坏了&#xff08;Broken sudo&#xff09;&#xff0c;于是上谷歌搜索XXX is not in the sudoers file. This inciden…

智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamMask(2019)

与普通的视频跟踪网络不同的是&#xff0c;SiamMask可以同时完成视频跟踪和实例级分割的任务。如下图所示&#xff0c;与传统的对象跟踪器一样&#xff0c;依赖于一个简单的边界框初始化&#xff08;蓝色&#xff09;并在线操作。与ECO&#xff08;红色&#xff09;等最先进的跟…