Django admin conditional inline

У меня есть модель вопроса, которая может иметь различные типы, такие как SINGLE_ANSWER, MULTIPLE_ANSWER, CODE, ...

MODELS.PY :

class Question(BaseModel):
    class QuestionType(models.IntegerChoices):
        SINGLE_ANSWER = 1
        MULTIPLE_ANSWER = 2
        ESSAY = 3
        CODE = 4
        VIDEO = 5
        UPLOAD = 6

    class DifficultyLevel(models.IntegerChoices):
        EASY = 1
        MEDIUM = 2
        HARD = 3

    question_text = models.TextField()
    type = models.IntegerField(choices=QuestionType.choices)
    level = models.IntegerField(default=1, choices=DifficultyLevel.choices)

    def get_absolute_url(self):
        self.get_type_display()

    def __str__(self):
        return truncatewords(self.question_text, 7)

ADMIN :

@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
    inlines = [
        OptionInline,
        CodeInline,
        TestCaseInline,
    ]

При использовании этого кода все инлайны (OptionInline, CodeInline, TestCaseInline) будут отображаться на странице администратора, как показано на рисунке ниже: question admin panel pic

но я хочу, чтобы строчки появлялись всякий раз, когда пользователь выбирает тип, например, OptionInline появляется, когда пользователь выбирает multiple_answer или CodeInline появляется, когда пользователь выбирает CODE из выпадающего списка типов

что я сделал для этого, так это переопределил метод get_inlines

ADMIN :

    def get_inlines(self, request, obj: Question):
        if obj:
            if obj.type in [Question.QuestionType.SINGLE_ANSWER, Question.QuestionType.MULTIPLE_ANSWER]:
                return [OptionInline]
            elif obj.type == Question.QuestionType.CODE:
                return [CodeInline, TestCaseInline]
            else:
                return []
        else:
            return []

но у меня проблема

когда я хочу изменить тип после сохранения вопроса, появляется эта ошибка: (Hidden field INITIAL_FORMS) This field is required.

ManagementForm data is missing or has been tampered with. Missing fields: options-TOTAL_FORMS, options-INITIAL_FORMS. You may need to file a bug report if the issue persists.

ошибка

и еще я хочу знать, возможно ли показать инлайн сразу после выбора типа из выпадающего списка (до сохранения)

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