gpt4 book ai didi

python - 从模型创建表单中的相关模型字段中删除 'Delete selected model' 按钮(Django 管理)

转载 作者:行者123 更新时间:2023-12-01 09:12:41 25 4
gpt4 key购买 nike

在我的模型中,我有 Document 模型,其中包含 Library 模型的外键。当我在 Django 管理站点中创建新的 Document 时,我想禁用编辑和删除 Library 实例。

Admin site, view for adding new Document

我尝试的是通过子类化 django.contrib.admin.ModelAdmin 来删除删除和编辑权限并删除更改/删除权限

@admin.register(Library)
class LibraryAdmin(admin.ModelAdmin):
def has_delete_permission(self, request, obj=None):
return False

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

这使得不需要的按钮消失,但也完全阻止了编辑和删除的可能性,这不是我想要的。有没有办法仅在模型编辑表单中禁用这些操作?

最佳答案

您可以在文档管理中标记该请求:

def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
request._editing_document = object_id is not None # add attribute
return super(DocumentAdmin, self).changeform_view(request, object_id=object_id, form_url=form_url, extra_context=extra_context)

现在您可以在相关管理中访问该标志:

@admin.register(Library)
class LibraryAdmin(admin.ModelAdmin):
def has_delete_permission(self, request, obj=None):
if getattr(request, '_editing_document', False): # query attribute
return False
return super(LibraryAdmin, self).has_delete_permission(request, obj=obj)

关于python - 从模型创建表单中的相关模型字段中删除 'Delete selected model' 按钮(Django 管理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51515078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com