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

Я новичок в Python/Django, мне было поручено перенести старый проект с Python 3.7 / Django 2.2.5 на Python 3.12 и Django 5.1, но когда я это сделал, некоторые функции не работают теперь .

Например, раньше в интерфейсе администратора при нажатии на кнопку «Добавить наблюдателя» я мог создать наблюдателя и на той же странице выбрать соответствующий триггер, индикатор и другой персонал.

Но в моей новой версии, когда я выбираю Add Watcher, у меня возникает эта ошибка :

RuntimeError at /admin/watchers/watcher/add/
'empty_form' is not used in polymorphic formsets, use 'empty_forms' instead.

Я использую последнюю версию django-polymorphic, nested-admin

from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin, PolymorphicInlineSupportMixin
import nested_admin
from django.db import transaction
from watchers.models import *
 
class TriggerInline(nested_admin.NestedStackedPolymorphicInline):
    model = apps.get_model('triggers', 'Trigger')
    child_inlines = tuple([type(f'{subclass.__name__}Inline', (nested_admin.NestedStackedPolymorphicInline.Child,),
                                {
                                    'model': subclass,
                                    'inlines': [
                                        TriggerComponentInline] if subclass.__name__ == "CompositeTrigger" else []
                                }) for subclass in apps.get_model('triggers', 'Trigger').__subclasses__()])

#Same that TriggerInline
class IndicatorInline(nested_admin.NestedStackedPolymorphicInline)    

class WatcherChildAdmin(PolymorphicChildModelAdmin):
    base_model = Watcher
    inlines = (IndicatorInline, TriggerInline,)
    #Other infos

#Register subclass
for subclass in Watcher.__subclasses__():
    admin_class = type(f'{subclass.__name__}Admin',
                       (nested_admin.NestedPolymorphicInlineSupportMixin,WatcherChildAdmin,),
                       {
                           'base_model': subclass,
                           'exclude': ['periodicTask', ],
                       })
    admin.site.register(subclass, admin_class)


@admin.register(Watcher)
class WatcherParentAdmin(PolymorphicInlineSupportMixin, PolymorphicParentModelAdmin):
    base_model = Watcher
    child_models = tuple(Watcher.__subclasses__())
    #Other Functions

И триггер, и индикатор имеют наблюдателя в модели, пример :

класс Indicator(PolymorphicModel): ..... watcher = models.OneToOneField(Watcher, null=True, on_delete=models.CASCADE)

Если вы поможете мне, вы будете лучше, чем Чатгпт :)

Полный отслеживание =>

Спасибо

django-polymorphic указан как поддерживающий только версии Django 2.2, 3.0, 3.1, 3.2 и 4.0. Он не поддерживает Django версии 5.1.

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