如何根据请求在ModelAdmin类上设置一些初始属性?

时间:2019-06-05 21:05:49

标签: django django-rest-framework django-admin

我上了这个课:

class PersonAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        if request.user.is_superuser:
        ....

    def delete_queryset(self, request):
        if request.user.is_superuser:
        ....

基本上,我会继续重复if request.user.is_superuser。我想要的是设置一个初始标志,以便我可以继续重用它。为什么?因为逻辑可以更改为if request.user.is_superuser or ...,所以我不想到处重复。我看着__init__(),却看不到有一种做我想做的方法。

1 个答案:

答案 0 :(得分:1)

在PersonAdmin上创建函数的最佳方法,例如has_permission。

class PersonAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        if self.has_permission(request.user):
        ....

    def delete_queryset(self, request):
        if self.has_permission(request.user):
        ....

    def has_permission(self, user):
        # later at other logic
        return user.is_superuser