我正在从Django 1.11升级Django项目。我已经成功地将该项目升级到Django 2.1。当我升级到Django 2.2时,我得到了以下错误消息:"(admin.E130) name属性在类AdimClass(非实名)中定义的操作必须是唯一的“
管理员类是
class AAdmin(admin.ModelAdmin)
def custom_action(self, request, queryset):
# perform custom action
.....
def custom_action_2(self, request, queryset):
# another custom actions
.....
action = [custom_action, custom_action_2]
class BAdmin(AAdmin):
def custom_action(self, request, queryset):
# performs different actions but has the same name as AAdmin action
.....
actions = AAdmin.actions + [custom_action]
问题: (admin.E130) name AdimClass类中定义的操作属性(非实名)必须是唯一的
如果我将custom_action从AAdmin中删除,则错误将得到解决,但该操作不再适用于继承AAdmin的其他类。
目标:将操作保存在父类AAdmin中,并在子类BAdmin上重写它。
注意:代码运行良好,一直到Django 2.1。
发布于 2020-08-17 14:46:13
问题是您试图两次将相同的操作名"custom_action“添加到BAdmin中,第一个是由AAdmin继承的。解决方案是不包括重复操作。一种可能的解决办法:
class BAdmin(AAdmin):
def get_actions(self, request):
actions = AAdmin.actions
if 'custom_action' in actions:
del actions['custom_action']
return actions + [custom_action]
https://stackoverflow.com/questions/61270409
复制相似问题