Как я могу установить некоторые начальные свойства для класса ModelAdmin на основе запроса? - PullRequest
0 голосов
/ 06 июня 2019

У меня есть этот класс:

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 Ответ

2 голосов
/ 06 июня 2019

Лучший способ просто создать функцию в 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
...