5 Django系列之通过list_display展示多对多与外键内容在admin-web界面下
生活随笔
收集整理的這篇文章主要介紹了
5 Django系列之通过list_display展示多对多与外键内容在admin-web界面下
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
list_display展示多對多關系的內容
表結構關系
表一
表二
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 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
總結
以上是生活随笔為你收集整理的5 Django系列之通过list_display展示多对多与外键内容在admin-web界面下的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: APP性能测试之jmeter
- 下一篇: 真北方向、坐标北向以及磁北向