django admin.py配置其他表的外键显示list_display
时间: 2024-02-19 18:59:18 浏览: 248
如果您想在 Django Admin 中显示其他表的外键值,可以在 admin.py 文件中使用 list_display 属性来指定要显示的字段列表。首先,您需要将要显示的模型导入到 admin.py 文件中。例如,如果您想在 Article 模型的列表中显示外键值,可以这样设置:
```
from django.contrib import admin
from myapp.models import Article
class ArticleAdmin(admin.ModelAdmin):
list_display = ('id', 'title', 'author_name')
def author_name(self, obj):
return obj.author.name
admin.site.register(Article, ArticleAdmin)
```
在这个例子中,我们创建了一个名为 ArticleAdmin 的 ModelAdmin 类,并将其注册到 Django Admin 中。我们还在 list_display 中指定了要显示的字段列表,其中包括 Article 模型的外键字段 "author"。为了显示外键值,我们还定义了一个名为 "author_name" 的方法,并将其添加到 list_display 中。这个方法通过访问 Article 对象的外键 "author" 的属性 "name" 来获取作者的名称,并将其返回。
这样就可以在 Django Admin 中显示其他表的外键值了。
相关问题
django admin.py配置其他表主键显示list_display
如果您想在 Django Admin 中显示其他表的主键值,可以在 admin.py 文件中使用 list_display 属性来指定要显示的字段列表。首先,您需要将要显示的模型导入到 admin.py 文件中。例如,如果您想在 User 模型的列表中显示主键值,可以这样设置:
```
from django.contrib import admin
from django.contrib.auth.models import User
class UserAdmin(admin.ModelAdmin):
list_display = ('id', 'username', 'email')
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
```
在这个例子中,我们创建了一个名为 UserAdmin 的 ModelAdmin 类,并将其注册到 Django Admin 中。我们还在 list_display 中指定了要显示的字段列表,其中包括主键字段 "id"。最后,我们使用 unregister 和 register 方法将 User 模型从 Django Admin 中取消注册并重新注册,以便应用新的配置。
这样就可以在 Django Admin 中显示其他表的主键值了。
django admin.py list_display 显示外键
在 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',用来在列表头部显示。
阅读全文