django admin.py list_display 显示外键
时间: 2024-02-19 16:59:20 浏览: 244
在 Django 的 admin.py 中,如果要在 list_display 中显示一个外键的相关字段,可以使用双下划线语法。例如,如果有一个名为 Book 的模型,并且它有一个外键字段 author,你可以这样在 BookAdmin 中的 list_display 中显示作者的名字:
```python
from django.contrib import admin
from .models import Book
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author__name')
admin.site.register(Book, BookAdmin)
```
其中,'author__name' 表示要显示作者的名字,其中的双下划线 '__' 表示要通过外键访问作者模型的 name 字段。需要注意的是,如果外键是多对多关系,则需要使用 'related_name' 来设置反向关联的名称,例如:
```python
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=50)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author, related_name='books')
```
在 BookAdmin 中,可以这样显示作者们的名字:
```python
class BookAdmin(admin.ModelAdmin):
def authors_name(self, obj):
return ', '.join([a.name for a in obj.authors.all()])
authors_name.short_description = 'Authors'
list_display = ('title', 'authors_name')
```
其中,'authors_name' 是一个自定义的方法,用来返回作者们的名字,然后在 list_display 中显示。需要注意的是,自定义的方法需要设置一个短描述 'short_description',用来在列表头部显示。
阅读全文
相关推荐


















