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.