我一直在尝试在Django中自动创建一系列管理操作。
基本上我想创建批量更改Project对象上的状态字段的可能性。状态字段是ForeignkeyField。
我认为制作像这样的类会起作用:
class StatusAction(object):
def __init__(self,status):
self.status = status
def make_action(self, modeladmin, request, queryset):
self.queryset = queryset.update(status=self.status)
make_action.short_description = "Change status to '%s' for selected projects" % status
然后声明如下操作:
actions = [StatusAction(s.id).make_action for s in Status.objects.all()]
我遇到两个问题:
我也尝试用闭包(函数中的函数)来做这个。它解决了函数问题的属性,但仍然只有一个操作在管理员中结束。
答案 0 :(得分:1)
据我所知,动作函数应该有不同的名称:
def create_action(status):
def action_func(modeladmin, request, queryset):
print status
action_func.__name__ = 'make_action_%d' % status.id
action_func.short_description = "Change status to '%s' for selected projects" % status
return action_func
actions = []
for s in Status.objects.all():
actions.append(create_action(s))