Django admin Foreignkey ManyToMany list_display展示
2023-06-13 09:17:14 时间
class Ghost(models.Model):
create = models.DateTimeField(default=timezone.now, help_text='创建时间')
update = models.DateTimeField(auto_now=True, help_text='修改时间')
speed = models.IntegerField(default=0, help_text='速度')
name = models.CharField(max_length=64, help_text='名称')
class InstanceTask(models.Model):
create = models.DateTimeField(default=timezone.now, help_text='创建时间')
update = models.DateTimeField(auto_now=True, help_text='修改时间')
name = models.CharField(max_length=64, help_text='副本名称')
class InstanceTaskMap(models.Model):
create = models.DateTimeField(default=timezone.now, help_text='创建时间')
update = models.DateTimeField(auto_now=True, help_text='修改时间')
name = models.CharField(max_length=64, help_text='地图名称')
ghosts = models.ManyToManyField(Ghost, help_text='Ghost')
instance_task = models.ForeignKey(InstanceTask, related_name='instancetask_instancetaskmap', blank=True, null=True,
help_text='副本任务', on_delete=models.SET_NULL)
对于上面的model,如果要在django admin中展示ghosts信息,那么在list_display中直接加入’ghosts’ 会报下面的错误:The value of ‘list_display[1]’ must not be a ManyToManyField.
如果要解决这个问题可以使用下面的代码来展示:
class InstanceTaskMapAdmin(admin.ModelAdmin):
list_display = ('name', 'instance_task', 'id', 'index', 'get_ghost_name', 'introduction')
# https://blog.csdn.net/weixin_42134789/article/details/83686664
def get_ghost_name(self, obj):
ghost_list = []
for g in obj.ghosts.all():
ghost_list.append(g.ghost.name)
return ','.join(ghost_list)
get_ghost_name.short_description = "Ghosts"
如果需要更丰富的信息可以参考上面代码注释中的链接。
对于foreignkey同样可以使用这样的方式进行反向查询展示所有相关的model。
例如要在InstanceTask页面展示所有的InstanceTaskMap,可以使用下面的代码:
class InstanceTaskAdmin(admin.ModelAdmin):
list_display = ('name', 'id', 'need_level', 'times_limit', 'instance_type','get_map_list', 'introduction')
def get_map_list(self, obj):
map_list = []
for g in obj.instancetask_instancetaskmap.all().order_by('index'):
map_list.append(g.name + '(' + str(g.index) + ')')
return ','.join(map_list)
get_map_list.short_description = "Maps"
☆文章版权声明☆
* 网站名称:obaby@mars * 网址:https://h4ck.org.cn/ * 本文标题: 《Django admin Foreignkey ManyToMany list_display展示》 * 本文链接:https://h4ck.org.cn/2019/12/django-admin-foreignkey-manytomanykey-list_display%e5%b1%95%e7%a4%ba/ * 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。
分享文章:
相关文章:
- Django REST framework foreignkey 序列化
- django raw_id_fields 显示名称而不是id(raw_id_fields: How to show a name instead of id)
- Django 限制访问频率
- Apache2 Django {“detail”:”Authentication credentials were not provided.”}
- wp-admin 诡异的404和500错误
- 再谈《Django 限制访问频率》
- Django input value值被截断
- Django APScheduler + uwsgi 定时任务重复运行
- django 主动抛出 403 异常
- ngix+uwsgi+django 以及阿里云rds数据库数据导入
相关文章
- Django中的关系映射
- Django 使用 django-redis 作为缓存的正确用法,别忽略缓存的使用原则
- 【Django | 开发】面试招聘信息网站(处理产品细节和权限&美化页面样式)
- django:Content-Disposition filename:日本語 pdf csv output
- Java list转为object_List集合转JSONObject
- django动态路由_网线无线转换器怎么用
- 【Django】在大型项目中的django的性能模型字段primary_key
- 如何让django的model名和应用名显示为中文
- Django自动化测试平台项目前端框架设计
- Add a button/form/link to Django Admin(添加按钮、表单、链接到 django admin)
- Sentry 错误监控(Django 错误监控)
- django admin list_filter 显示外键字段
- Django debug=False 时能找到静态文件的几种方式(静态文件找不到)
- django import_export 个性化导出 model 里的 字段含有 choice 的值
- Django admin admin_order_field 自定义字段排序实现方法
- python-Django-基础概念(二)
- python-Django-Django 模型层的关联关系(一)
- django开发微信小程序后端登录详解手机开发
- list java中List对象通用排序算法详解编程语言
- django 获取当前访问的URL详解编程语言
- stark组件之过滤操作【模仿Django的admin】详解编程语言
- 长度查看Redis List长度:简单有效(redis查看list)
- 结构使用Redis List结构实现快速操作(redis中list)
- 性能优化提升Redis List性能的简单方法(redis的list)
- 使用Redis在List中存储数据(redis存入list)
- Mysql实现List存储的技巧(mysql存储list)
- Mastering List Operations in Redis: Tips and Tricks for Optimal Performance(redis操作list)
- 以List形式存储至Redis中(往redis里存list)
- 警惕Redis List被空出(redis里list为空)
- 使用XmlSerializer序列化List对象成XML格式(list对象序列化)