Django Django admin显示关联模型的字段

Django Django admin显示关联模型的字段

在本文中,我们将介绍如何使用Django admin来显示关联模型的字段。在开发Web应用程序时,我们经常需要在后台管理界面中显示不仅仅是模型的自身字段,还需要显示与其他模型相关联的字段。使用Django的admin功能,我们可以轻松地实现这一目标。

阅读更多:Django 教程

关联模型

首先,让我们先来了解一下什么是关联模型。在Django中,关联模型是指与其他模型建立关联的模型。这种关联可以通过外键、多对多或一对一关系来实现。例如,我们有一个模型叫做Author,另一个模型叫做Book,两者之间通过外键来建立关联。在Django的后台管理界面中,当我们查看Book模型的记录时,我们可能希望同时看到Author模型的相关信息。

在Django admin中显示关联字段

要在Django admin中显示关联模型的字段,我们可以使用list_display属性。list_display属性是一个用于指定要在列表视图中显示的字段列表的属性。我们可以在模型的admin类中使用list_display属性来定义要显示的字段。

假设我们有以下两个模型:AuthorBook

from django.contrib import admin

from .models import Author, Book

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'publish_date')

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    list_display = ('name', 'country')

在上面的例子中,BookAdmin类是Book模型的admin类,AuthorAdmin类是Author模型的admin类。在BookAdmin类的list_display属性中,我们指定了要显示的字段列表。其中,'title'Book模型的自身字段,'author'是与Author模型建立的外键关联,'publish_date'Book模型的自身字段。同样,在AuthorAdmin类的list_display属性中,我们指定了要显示的字段列表,这里只是显示了Author模型的自身字段。

定制关联字段的显示

在上述例子中,我们只是简单地显示了与其他模型建立关联的字段。然而,有时我们可能需要定制关联字段的显示方式。例如,我们可能希望显示关联模型的某个字段的特定属性,而不是整个对象。

为了达到这个目的,我们可以使用__语法来访问关联模型的字段。__表示关联链的一级级别。下面是一个例子:

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author_name', 'publish_date')

    def author_name(self, obj):
        return obj.author.name

在上面的例子中,我们定义了一个名为author_name的方法,它接受一个obj参数,代表当前模型的一个实例。在author_name方法中,我们通过obj.author.name访问了与Book模型关联的Author模型的name字段。然后,我们将author_name方法指定给list_display属性,这样在后台管理界面中就可以显示author_name字段了。

定义关联模型的搜索字段

除了显示关联模型的字段,我们还可以在Django admin中定义关联模型的搜索字段。这样,在后台管理界面中,我们就可以方便地搜索关联模型的记录了。

要定义关联模型的搜索字段,我们可以使用search_fields属性。search_fields属性是一个用于指定要在搜索框中显示的字段列表的属性。我们可以在模型的admin类中使用search_fields属性来定义搜索字段。

以下是一个例子:

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'publish_date')
    search_fields = ('title', 'author__name')

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    list_display = ('name', 'country')
    search_fields = ('name',)

在上面的例子中,我们在BookAdmin类的search_fields属性中定义了要搜索的字段列表。其中,'title'Book模型的自身字段,'author__name'Author模型的name字段,通过关联链访问。同样,我们在AuthorAdmin类的search_fields属性中定义了要搜索的字段列表,这里只是搜索了Author模型的自身字段。

总结

本文介绍了如何在Django admin中显示关联模型的字段。我们可以使用list_display属性来指定要显示的字段列表,并可以通过定制方法来显示关联字段的特定属性。此外,我们还可以使用search_fields属性来定义搜索字段,方便在后台管理界面中搜索关联模型的记录。通过这些技术,我们可以高效地管理我们的应用程序数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程