Django InlineModelAdmin 对象应用

Django 提供了两个 InlineModelAdmin 的子类,它们是:

  • TabularInline
  • StackedInline

这两者之间的区别是程序模板的不同。

假设你有两个Model:

from django.db import models

class Author(models.Model):
   name = models.CharField(max_length=100)
   
   class Meta:
       verbose_name_plural = '作者管理'

class Book(models.Model):
   author = models.ForeignKey(Author, on_delete=models.CASCADE)
   title = models.CharField(max_length=100)
   
   class Meta:
       verbose_name_plural = '书籍管理'

可以通过在 ModelAdmin.inlines 中指定内联来实现同一个页面编辑作者名字和对应的书名:

from django.contrib import admin

class BookInline(admin.TabularInline):
    model = Book

class AuthorAdmin(admin.ModelAdmin):
    list_display = (id, name)
    fields = ('name')
    inlines = [
        BookInline,
    ]

参考: