gpt4 book ai didi

python - 使用 get_inline_instances 覆盖添加权限?

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:05 24 4
gpt4 key购买 nike

我目前有一堆内联,它们都继承自基本内联类,设置如下:

class BaseInlineAdmin(admin.TabularInline):
extra = 0

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

def has_add_permission(self, request):
return False

我现在想更改我的管理员,以便根据用户的不同,内联会像这样更改:

class PartyAdmin(admin.ModelAdmin):
inline1 = [Inline1, Inline2]
inline2 = [Inline1, Inline2, Inline3]

def get_inline_instances(self, request, obj=None):
if request.user.is_staff:
return [inline(self.model, self.admin_site) for inline in self.inline1]
else:
return [inline(self.model, self.admin_site) for inline in self.inline2]

但是,当我这样做时,has_add_permission 不再起作用。当我不使用 get_inline_instances 时,用户无法添加其他项目,我希望此功能保持一致。当我使用此方法时,是否有任何原因导致这种情况没有继续下去?

根据记录,has_delete_permission 仍然为 False,这使得情况变得更加奇怪。

最佳答案

get_inline_instances 是检查权限的方法。如果您想检查权限,则必须调用 super().get_inline_instances(),或者需要从 original function 复制代码。 。

关于python - 使用 get_inline_instances 覆盖添加权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38443317/

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