ANTIO.TOP
首页
  • 运维

    • LDAP统一认证
    • 基于centos7打造个人服务器
    • 大数据之路
  • 开发

    • Django技巧
收藏家
开源项目
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Yue.Wu

GO AND BEYOND
首页
  • 运维

    • LDAP统一认证
    • 基于centos7打造个人服务器
    • 大数据之路
  • 开发

    • Django技巧
收藏家
开源项目
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 运维

  • 开发

    • Django技巧

      • 在admin中`list_filter`多级外键问题解决
      • 在admin中`list_display`如何展示外键字段
        • 背景
        • 示例
          • models.py
          • admin.py
        • 总结
      • drf中如何设置返回Serializers自定义字段
  • 技术专栏
  • 开发
  • Django技巧
Yue.Wu
2020-10-10

在admin中list_display如何展示外键字段

# 背景

在django的admin中,我们经常会碰到要在列表页中展示外键字段的需求,list_display即可用来展示对应model的字段,但直接展示model外键字段是不被允许的,怎么解决这个问题呢?继续往下看吧。

# 示例

# models.py

from django.db import models
class Author(models.Model):
	name = models.CharField(max_length=255, verbose_name='作者')
	age = models.IntegerField(verbose_name='年龄')

class Book(models.Model):
	author = models.ForeignKey('Author', verbose_name='作者', on_delete=models.CASCADE)
	name = models.CharField(max_length=255, verbose_name='书名')
1
2
3
4
5
6
7
8

# admin.py

from django.contrib import admin
from .models import Book

# 错误的示范
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
	list_display = ('name', 'author__name', 'author__age')

# 正确的示范
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
	list_display = ('name', 'display_author_name', 'display_author_age')

	def display_author_name(self, obj):
		return obj.author.name
	display_author_name.short_description = '作者'
	display_author_name.admin_order_field = 'author__name'

	def display_author_age(self, obj):
		return obj.author.age
	display_author_age.short_description = '年龄'
	display_author_age.admin_order_field = 'author__age'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 总结

代码中display_<field>.short_description用于指定列标题,display_<field>.admin_order_field用于指定排序字段名称(若不进行设置,该列将不能进行排序)

#python#django
上次更新: 2022/01/20, 04:18:33
在admin中`list_filter`多级外键问题解决
drf中如何设置返回Serializers自定义字段

← 在admin中`list_filter`多级外键问题解决 drf中如何设置返回Serializers自定义字段→

最近更新
01
docker-compose部署openldap
12-30
02
drf中如何设置返回Serializers自定义字段
10-10
03
在admin中list_filter多级外键问题解决
10-08
更多文章>
Theme by Vdoing | Copyright © 2017-2022 Yue.Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式