📜  类 ProfileInline (1)

📅  最后修改于: 2023-12-03 14:56:44.689000             🧑  作者: Mango

类 ProfileInline

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
model = Profile

指定了要内联显示的模型。在这个例子中,ProfileInline将显示Profile模型。

fk_name
fk_name = 'user'

指定了要查找依赖的外键的名称。在这个例子中,Profile模型有一个外键指向User模型,这个外键的名称是user

fields
fields = ('name', 'bio')

指定了要在ProfileInline中显示的字段。在这个例子中,将只显示namebio字段。如果未指定此属性,则默认情况下将显示所有字段。

extra
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,要显示的字段是namebio,并且我们不需要创建任何多余的表单。

然后,我们定义了一个名为UserAdmin的模型Admin类,将定义User模型的管理界面,并将ProfileInline添加到该界面中。最后,我们将UserAdmin注册到admin站点中。这样就可以在每个用户的管理界面中内联显示它们的Profile对象了。

参考资料