一个类别包含多篇文章,假设我们希望在查看编辑某个类别信息时,一同显示并编辑同属该类别下的所有文章信息,我们可以定义先定义ArticleInline类,然后把其附在CategoryAdmin里。这样我们就可以实现在同一页面上编辑类别和所属文章信息了,是不是很帅?
#blog/admin.py
from django.contrib import admin from .models import Article, Category, Tag class ArticleInline(admin.TabularInline): model = Article '''设置列表可显示的字段''' fields = ('title', 'author', 'status', 'mod_date',) class CategoryAdmin(admin.ModelAdmin): prepopulated_fields = {'slug': ('name',)} raw_id_fields = ("parent_category", ) inlines = [ArticleInline, ] admin.site.register(Category, CategoryAdmin)
展示效果如下所示。试想下,你想手动编写同样代码又要花多长时间?估计使用Mixins和Formsets早就让你心烦意乱了吧。
Django提供了两个InlineModelAdmin的子类:TabularInline和StackedInline