- 1
✩
0
Как сделать несколько однотипных действий в admin actions?
Обнаружил в django 1.1, в админке классную шутку называемую admin actions и сразу решил засунуть туда кучу однотипных действий:
actions_ar=[]
for action in ActionsModel.objects.all():
def action_funk(modeladmin, request, queryset):
obj=queryset[0]
queryset.update(something=action.something)
action_funk.short_description=action.name
actions_ar.append(action_funk)
А потом добавил массив с функциями экшенов( actions_ar ) в класс админки.
class SomeAdmin(admin.ModelAdmin):
actions = actions_ar
Но в итоге я вижу в админке, в actions только один action(тот у кого id меньше, видимо), что я сделал не так?
300
1 ответ:
-
- 1
Думаю, здесь нужно использовать callables:
class ActionCallable(object): def __init__(self, *args, **kwargs): self.args = args self.kwargs = kwargs def __call__(self, modeladmin, request, queryset): obj=queryset[0] queryset.update(*self.args, **self.kwargs) actions_ar=[] for action in ActionsModel.objects.all(): action_func = ActionCallable(something=action.something) action_func.short_description=action.name actions_ar.append(action_func)
Чтобы написать ответ, вы должны авторизироваться.