我一直在尝试在 Django 中自动创建一系列管理操作。
基本上我想创建批量更改项目对象上的状态字段的可能性。状态字段是一个外键字段。
我认为制作这样的课程会起作用:
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()]
我遇到两个问题:
- Admin 界面中只有一个动作结束(最后一个被取消)。
- make_action.short_description 属性具有类范围,因此我无法针对每个实例进行具体说明。将 self.make_action.short_description 放入 make_action 也不起作用。
我还尝试使用闭包(函数中的函数)来执行此操作。它解决了功能问题的属性,但仍然只有一个操作最终在管理员中结束。