Python Django:管理操作选择
我一直在上下寻找答案,但遗憾的是,没有 我试图在django admin下拉列表中添加操作(其中,Python Django:管理操作选择,python,django,django-admin,Python,Django,Django Admin,我一直在上下寻找答案,但遗憾的是,没有 我试图在django admin下拉列表中添加操作(其中,Delete Selectedis),但在添加一些操作后,我添加的操作也显示在其他模型上,我在中遵循了示例,但没有成功 如何限制仅添加到特定模型的操作 提前谢谢 (我使用的是python 2.7、django 1.8.2) 编辑 我通过以下方式按用户类型(超级用户或非超级用户)筛选选择: 在看到这个AdminModel类之后,我仍然不确定您是否对所有模型使用了相同的类 @admin.site.reg
Delete Selected
is),但在添加一些操作后,我添加的操作也显示在其他模型上,我在中遵循了示例,但没有成功
如何限制仅添加到特定模型的操作
提前谢谢
(我使用的是python 2.7、django 1.8.2)
编辑
我通过以下方式按用户类型(超级用户或非超级用户)筛选选择:
在看到这个
AdminModel
类之后,我仍然不确定您是否对所有模型使用了相同的类
@admin.site.register(ModelOne, ModelTwo)
class AdminModel(admin.ModelAdmin):
def get_actions(self, request):
actions = super(AdminModel, self).get_actions(request)
if not request.user.is_superuser:
if 'delete_selected' in actions:
del actions['delete_selected']
else:
self.actions.append(make_published)
self.actions.append(make_unpublished)
return actions
如果只需要特定模型的操作,只需创建两个独立的ModelAdmin
类
@admin.site.register(ModelOne)
class AdminModel(admin.ModelAdmin):
def get_actions(self, request):
actions = super(AdminModel, self).get_actions(request)
if not request.user.is_superuser:
if 'delete_selected' in actions:
del actions['delete_selected']
else:
self.actions.append(make_published)
self.actions.append(make_unpublished)
return actions
@admin.site.register(ModelTwo)
class NoActionsModel(admin.ModelAdmin):
pass
此外,在ModelAdmin
上,您应该能够使用has_delete_permission
()功能阻止除超级用户以外的所有用户
您是否可以展开上面的代码以显示已编辑的
AdminModel
类的其余部分,是否也可以使用queryset.save()
而不是fire\u employee
中的.update()
?您可以针对queryset:obj.APP\u STATUS=8中的obj的每个模型,循环查询集调用.save();obj.save()
这正是我所做的,当我访问管理中的其他模型时问题就开始了。选项仍然存在。您是否有多个管理站点。注册
调用<代码>管理站点注册(雇用申请人,人力资源部)admin.site.register(other_model,hrd)
我发现了我的代码中的错误,我需要在ModelAdmin
中声明actions=[]
,因为没有它,它会将操作添加到所有模型中
@admin.site.register(ModelOne)
class AdminModel(admin.ModelAdmin):
def get_actions(self, request):
actions = super(AdminModel, self).get_actions(request)
if not request.user.is_superuser:
if 'delete_selected' in actions:
del actions['delete_selected']
else:
self.actions.append(make_published)
self.actions.append(make_unpublished)
return actions
@admin.site.register(ModelTwo)
class NoActionsModel(admin.ModelAdmin):
pass
class AdminModel(admin.ModelAdmin):
def has_delete_permission(self, request, obj=None):
return request.user.is_superuser