Django admin – 在单个管理界面中混合多个模型

Django admin – 在单个管理界面中混合多个模型

在本文中,我们将介绍如何在Django的管理界面中混合多个模型(Multiple Model Inlines)。Django的管理界面(admin)是一个强大的工具,使开发者能够轻松地管理数据库中的数据。而混合多个模型则允许我们在同一个管理界面中同时管理多个相关联的模型。

阅读更多:Django 教程

什么是混合多个模型?

混合多个模型指的是在Django的管理界面中,同时管理多个相关联的模型。这种功能在实际开发中非常有用,特别是当我们有多个模型之间存在关联,而需要在同一个界面进行操作时。

如何混合多个模型?

要实现在Django的管理界面中混合多个模型,我们需要使用内联(Inline)模型。内联模型允许我们将相关联的模型嵌套在父模型的编辑界面中,以便同时编辑和保存这些模型的数据。

在下面的示例中,假设我们有两个模型:Author(作者)和Book(书籍)。一个作者可以有多本书,而一本书只属于一个作者。我们希望在管理界面中同时管理这两个模型。

首先,我们需要在admin.py中注册BookAuthor模型。然后,我们可以使用内联模型TabularInlineStackedInline来将Book嵌套在Author的管理界面中。代码如下所示:

from django.contrib import admin
from .models import Author, Book

class BookInline(admin.TabularInline):
    model = Book

class AuthorAdmin(admin.ModelAdmin):
    inlines = [BookInline]

admin.site.register(Author, AuthorAdmin)
admin.site.register(Book)
Python

在上面的例子中,我们创建了一个名为BookInline的内联模型,并将其关联到了Book模型。然后,我们将BookInline添加到了AuthorAdmininlines属性中。最后,我们分别注册了AuthorBook模型以启用后台管理界面。

现在,当我们在后台管理界面中编辑一个作者对象时,可以同时在同一个页面上编辑和保存与该作者关联的书籍对象。

更复杂的混合多个模型

除了将一个模型嵌套在另一个模型中,我们还可以混合多个模型来创建更复杂的管理界面。

假设我们有三个模型:Author(作者)、Book(书籍)和Review(评论)。一个作者可以有多本书,一本书可以有多个评论。我们希望在管理界面中同时管理这三个模型。

首先,我们需要在admin.py中注册这三个模型。然后,我们可以使用多个内联模型来将这些模型嵌套在父模型的编辑界面中。代码如下所示:

from django.contrib import admin
from .models import Author, Book, Review

class BookInline(admin.TabularInline):
    model = Book
    extra = 0

class ReviewInline(admin.StackedInline):
    model = Review
    extra = 0

class AuthorAdmin(admin.ModelAdmin):
    inlines = [BookInline, ReviewInline]

admin.site.register(Author, AuthorAdmin)
admin.site.register(Book)
admin.site.register(Review)
Python

在上面的例子中,我们创建了一个名为ReviewInline的内联模型,并将其关联到了Review模型。然后,我们将BookInlineReviewInline分别添加到了AuthorAdmininlines属性中。extra属性用于控制初始展示的内联模型行数。

现在,当我们在后台管理界面中编辑一个作者对象时,可以同时在同一个页面上编辑和保存与该作者关联的书籍和评论对象。

总结

Django的管理界面提供了强大的功能,使得我们能够轻松地管理和操作数据库中的数据。通过使用内联模型,我们可以在单个管理界面中混合多个相关联的模型。这种功能对于管理应用程序中复杂的数据库关系非常有用。希望本文能够帮助您更好地理解和应用Django admin中的内联模型功能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册