在Django的Admin界面中,默认情况下,外键(ForeignKey)字段会显示为关联对象的字符串表示。如果你希望将外键显示为字段而不是对象,可以通过自定义Admin类来实现。
假设我们有两个模型Author
和Book
,其中Book
模型有一个外键指向Author
模型:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
默认情况下,在Django Admin中,Book
模型的author
字段会显示为关联的Author
对象的字符串表示(通常是Author
对象的__str__
方法的返回值)。
我们可以通过自定义Admin类来将外键显示为字段:
from django.contrib import admin
from .models import Book, Author
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author_name')
def author_name(self, obj):
return obj.author.name
author_name.short_description = 'Author Name'
admin.site.register(Book, BookAdmin)
admin.site.register(Author)
在这个示例中,我们定义了一个BookAdmin
类,并在其中添加了一个author_name
方法,该方法返回Book
对象的author
字段的name
属性。通过将author_name
添加到list_display
中,我们可以在Admin界面的列表视图中直接显示作者的名字。
通过自定义Admin类中的方法,并将其添加到list_display
中,可以实现将外键显示为字段的功能。
通过这种方式,你可以灵活地定制Django Admin界面的显示内容,以满足不同的业务需求。
领取专属 10元无门槛券
手把手带您无忧上云