在Django中添加自定义内联管理窗口小部件,可以通过以下步骤实现:
admin.TabularInline
或admin.StackedInline
。model
属性为要关联的模型类,并设置fk_name
属性为外键字段名称。extra
属性为要显示的空白表单数量,以及max_num
属性为允许的最大表单数量。formfield_for_dbfield
方法,以自定义表单字段的属性。admin.ModelAdmin
类中,将自定义内联管理窗口小部件类添加到inlines
属性中。以下是一个示例代码:
from django.contrib import admin
from myapp.models import Author, Book
class BookInline(admin.TabularInline):
model = Book
fk_name = 'author'
extra = 1
max_num = 5
def formfield_for_dbfield(self, db_field, **kwargs):
if db_field.name == 'title':
kwargs['widget'] = MyCustomWidget()
return super().formfield_for_dbfield(db_field, **kwargs)
class AuthorAdmin(admin.ModelAdmin):
inlines = [BookInline]
admin.site.register(Author, AuthorAdmin)
在这个示例中,我们创建了一个自定义内联管理窗口小部件类BookInline
,用于在Author
模型的管理窗口中添加Book
模型的内联表单。我们设置了model
属性为Book
,fk_name
属性为author
,extra
属性为1,max_num
属性为5。我们还重写了formfield_for_dbfield
方法,以自定义title
字段的属性。最后,我们将BookInline
添加到AuthorAdmin
类的inlines
属性中,并将AuthorAdmin
注册到admin.site
中。
领取专属 10元无门槛券
手把手带您无忧上云