Django Admin-禁用编辑并删除特定模型的“保存”按钮

新手上路,请多包涵

我有一个 Django 模型,我希望它是只读的。不允许添加和编辑。

我已在 ModelAdmin 中将所有字段标记为只读并覆盖 has_add_permission 为:

 class SomeModelAdmin(admin.ModelAdmin):
     def has_add_permission(self, request):
        return False

有没有类似的 has_edit_permission ?可以禁用哪个以删除“保存”和“保存并继续”按钮?并用一个简单的“关闭并返回”按钮代替。

Django Documentation Only 只提到只读字段而不是覆盖编辑权限。

原文由 jerrymouse 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 966
2 个回答

覆盖 templates/admin/submit_line.html 模板并根据需要制作按钮。您可以通过将其放入 templates/admin/[app_label]/[model]/submit_line.html 来仅针对特定型号执行此操作。

要有条件地显示默认提交行或您的自定义提交行,覆盖 ModelAdmin.change_view ,并向 extra_context 添加一个布尔值:

 class MyModelAdmin(admin.ModelAdmin):
    ...
    def change_view(self, request, object_id, extra_context=None):
        if not request.user.is_superuser:
            extra_context = extra_context or {}
            extra_context['readonly'] = True

        return super(MyModelAdmin, self).change_view(request, object_id, extra_context=extra_context)

原文由 Chris Pratt 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于 Django 1.11:

 def has_add_permission(self, request, obj=None):
    return False

def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
    extra_context = extra_context or {}
    extra_context['show_save_and_continue'] = False
    extra_context['show_save'] = False
    return super(YourModelAdmin, self).changeform_view(request, object_id, extra_context=extra_context)

原文由 xleon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题