以官方文檔為例:
一個投票問題包含多個選項,基本的表單設計只能一個選項一個選項添加,效率較低,如何在表單設計中一次性添加多個關聯選項?
示例代碼:
from django.contrib import adminfrom .models import Choice, Questionclass ChoiceInline(admin.StackedInline):model = Choiceextra = 3class QuestionAdmin(admin.ModelAdmin):fieldsets = [(None, {"fields": ["question_text"]}),("Date information", {"fields": ["pub_date"], "classes": ["collapse"]}),]inlines = [ChoiceInline]admin.site.register(Question, QuestionAdmin)
效果如下圖:
extra變量定義了在一個新表單中將會出現多少個需要同時添加的對象實例。
在三個插槽的末端,你會看到一個“Add another Choice”的按鈕。如果你單擊它,一個新的插槽會被添加。如果你想移除已有的插槽,可以點擊插槽右上角的X。
不過,仍然有點小問題。它占據了大量的屏幕區域來顯示所有關聯的 Choice 對象的字段。對于這個問題,Django 提供了一種表格式的單行顯示關聯對象的方法。要使用它,只需按如下形式修改 ChoiceInline 申明:
class ChoiceInline(admin.TabularInline): ...
通過 TabularInline (替代 StackedInline ),關聯對象以一種表格式的方式展示,顯得更加緊湊:
可以看到多出來一列,列名叫“DELETE?”,這一列可以刪除使用“Add another Choice”按鈕添加的行和已保存的行。