我有一个基本的管理员模型,我设法覆盖了某些行,例如内联,字段等,但是由于某些原因,我无法覆盖操作,我缺少了什么?
boolean found = Predicates.isStringValueAllowed(list).test(valueToCheck);
订单模型应仅具有“ some_new_action”操作,但仅具有基本管理操作“ some_action”,因此不会被覆盖。
答案 0 :(得分:0)
您不想在OrderAdmin
和父类中两次注册模型。这可能会产生一些奇怪的效果(例如您的动作)。跨ModelAdmin类重用功能的一种简单方法是将其放入mixin,然后在需要的地方包括该mixin。像这样:
class CommonAdminMixin:
actions = ['some_action']
@admin.register(Order)
class OrderAdmin(CommonAdminMixin, models.Admin):
actions = []
@admin.register(AnotherModel)
class AnotherAdmin(CommonAdminMixin, models.Admin):
...
答案 1 :(得分:0)
类似于mixin解决方案,但我将改用父类,这样您就可以在方法中调用super()
而不会产生任何怪异。
class BaseAdmin(admin.ModelAdmin):
actions = ['some_action']
@admin.register(Order)
class OrderAdmin(BaseAdmin):
model = Order
@admin.register(AnotherModel)
class AnotherAdmin(BaseAdmin):
model = AnotherModel
actions = []
您只需覆盖admin.ModelAdmin
类中的BaseAdmin
并从BaseAdmin
继承。然后,您可以像对待BaseAdmin
一样有效地对待admin.ModelAdmin