📅  最后修改于: 2023-12-03 14:56:44.689000             🧑  作者: Mango
ProfileInline
是Django中的内联模型Admin类,用于在admin站点中的父模型中内联显示它的子模型。它对于制作内联表单非常有用。
django.contrib.admin.options.InlineModelAdmin
└── django.contrib.admin.options.BaseInlineFormSet
└── django.forms.models.BaseInlineFormSet
└── django.forms.formsets.BaseFormSet
ProfileInline
从Django内建的InlineModelAdmin
类继承而来,并使用了它的内联表单和行为。
model = Profile
指定了要内联显示的模型。在这个例子中,ProfileInline
将显示Profile
模型。
fk_name = 'user'
指定了要查找依赖的外键的名称。在这个例子中,Profile
模型有一个外键指向User
模型,这个外键的名称是user
。
fields = ('name', 'bio')
指定了要在ProfileInline
中显示的字段。在这个例子中,将只显示name
和bio
字段。如果未指定此属性,则默认情况下将显示所有字段。
extra = 0
指定了要为ProfileInline
创建多少个额外的表单。默认情况下,将为每个Profile
对象创建一个表单,在这个例子中,由于将extra
设置为0,因此不会创建任何额外的表单。
from django.contrib import admin
from .models import User, Profile
class ProfileInline(admin.TabularInline):
model = Profile
fk_name = 'user'
fields = ('name', 'bio')
extra = 0
class UserAdmin(admin.ModelAdmin):
model = User
inlines = [ProfileInline]
admin.site.register(User, UserAdmin)
在这个例子中,我们定义了一个名为ProfileInline
的内联模型Admin类。我们指定了要显示的模型是Profile
,依赖用户的外键名称是user
,要显示的字段是name
和bio
,并且我们不需要创建任何多余的表单。
然后,我们定义了一个名为UserAdmin
的模型Admin类,将定义User
模型的管理界面,并将ProfileInline
添加到该界面中。最后,我们将UserAdmin
注册到admin站点中。这样就可以在每个用户的管理界面中内联显示它们的Profile
对象了。