Здравствуйте, возникла задача создать двойной инлайн в админке, чтобы первый уровень был обычным, а второй с выбором "типа блока"
Допустим, есть какая-то модель Practicum, в которой создаются inline-ом, модели Screens, они имеют какие-то поля и возможность выбрать из ряда моделей, как это делается в polymorphic:
Я попытался сделать что-то такое:
class BlockInline(StackedPolymorphicInline):
class ScreenTextBlockLeftInline(StackedPolymorphicInline.Child):
model = ScreenTextBlock_left
class ScreenImageBlockLeftInline(StackedPolymorphicInline.Child):
model = ScreenImageBlock_left
# ... остальные блоки
model = Blocks
child_inlines = (
ScreenTextBlockLeftInline,
# ... остальные блоки
)
polymorphic_on = 'block_type'
class ScreenInline(PolymorphicInlineSupportMixin, admin.StackedInline):
model = Screens
inlines = [BlockInline]
fields = ['literature', 'leterature_approvals_and_decodings']
extra = 0
class PracticumAdmin(PolymorphicInlineSupportMixin, admin.ModelAdmin):
inlines = [ScreenInline]
exclude = [
'image_desktop_810px',
'image_desktop_1620px',
'image_mobile_400px',
'image_mobile_800px'
]
search_fields = ['title', 'description', 'pacient_description']
admin.site.register(Practicum, PracticumAdmin)
но Screens можно добавить, а вот внутри Screens нет выбора, как это исправить?