RuntimeError: 'empty_form' не используется в полиморфных наборах форм, используйте 'empty_forms' вместо этого

Я разрабатываю django api проект, основанный на django rest framework. У меня есть 4 модели:

class Module(models.Model):
    name = models.CharField(null=False, max_length=50, verbose_name='название')
    description = models.TextField(null=False, verbose_name='описание')
    image = models.ImageField(null=False, upload_to="image/module", verbose_name='картинка модуля')
    first_level = models.ForeignKey('plotbackend.Level', null=False, db_column='first_level_id', on_delete=models.PROTECT, related_name='+', verbose_name='первый уровень')

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'module'
        verbose_name = "модуль"
        verbose_name_plural = 'модули'


class Level(PolymorphicModel):
    name = models.CharField(null=True, blank=True, max_length=25, verbose_name="название")
    description = models.TextField(null=True, blank=True, verbose_name="описание")
    module = models.ForeignKey(Module, null=True, blank=True, verbose_name='модуль', db_column='module_id', on_delete=models.CASCADE, related_name='levels')
    next_level = models.ForeignKey('self', null=True, blank=True, verbose_name='следующий уровень', db_column='next_level_id', on_delete=models.SET_NULL)

    def __str__(self):
        return f'{self.name}'

    class Meta:
        db_table = 'level'
        verbose_name = "уровень"
        verbose_name_plural = 'уровни'


class Puzzle(Level):
    time = models.PositiveIntegerField(null=False)


class Test(Level):
    time = models.IntegerField(null=True, blank=True, verbose_name='время на прохождение теста')

    class Meta:
        db_table = 'test'
        verbose_name = "тест"
        verbose_name_plural = "тесты"

и модели администратора:

from django.contrib import admin
from polymorphic.admin import StackedPolymorphicInline, PolymorphicInlineSupportMixin, PolymorphicChildModelAdmin, PolymorphicParentModelAdmin
from .models import *

# Register your models here.

@admin.register(Test)
class TestAdmin(PolymorphicChildModelAdmin):
    base_model = Test


@admin.register(Puzzle)
class PuzzleAdmin(PolymorphicChildModelAdmin):
    base_model = Puzzle


@admin.register(Level)
class LevelAdmin(PolymorphicParentModelAdmin):
    base_model = Level
    child_models = (Test, Puzzle, )


class LevelInline(StackedPolymorphicInline):
    class TestInline(StackedPolymorphicInline.Child):
        model = Test

    class PuzzleInline(StackedPolymorphicInline.Child):
        model = Puzzle

    model = Level
    child_inlines = (
        TestInline,
        PuzzleInline,
    )


@admin.register(Module)
class ModuleAdmin(admin.ModelAdmin, PolymorphicInlineSupportMixin):
    inlines = (LevelInline,)

PolymorphicModelAdmin работает нормально для меня, но StackedPolymorphicInline выбрасывает это исключение. Traceback

Если я закомментирую поле inlines в ModuleAdmin, проект работает без исключений. Я пытался найти решение этой проблемы в интернете, но ничего не нашел. Как это исправить?

Я решил проблему самостоятельно.

Я только что изменил ModuleAdmin с
@admin.register(Module)
class ModuleAdmin(admin.ModelAdmin, PolymorphicInlineSupportMixin):
    inlines = (LevelInline,)

to

@admin.register(Module)
class ModuleAdmin(PolymorphicInlineSupportMixin, admin.ModelAdmin):
    inlines = (LevelInline,)

то есть, я просто изменил порядок наследования

Вернуться на верх