Evgenii Legotckoi
Қаң. 31, 2020, 2:50 Т.Қ.

Django - Сабақ 051. Пайдаланушыға байланысты ModelAdmin жүйесінде сұраулар жиынын және өңдеу мүмкіндігін өзгерту жолы

admin.ModelAdmin немесе UserAdmin сұраулар жиынын басқару пішінін түзету туралы жылдам жазба. UserAdmin пішіні admin.ModelAdmin ішінен мұраланғандықтан, шын мәнінде ешқандай айырмашылық жоқ. Дегенмен, мен мысал ретінде UserAdmin көрсетемін.

Тапсырма келесідей. Сайтта суперпайдаланушылар мен әкімшіліктен пайдаланушылар бар. Супер пайдаланушылар барлық пайдаланушыларды көре алады және оларды өздері қалағандай өңдей алады. Әкімші пайдаланушылары суперпайдаланушылардан басқа барлық пайдаланушы жазбаларын көре алады және басқа пайдаланушыларды суперпайдаланушылар ретінде белгілей алмайды.


Ал енді шешімге. Бұл пішін келесідей болады.

# -*- coding: utf-8 -*-

from django.contrib.auth.admin import UserAdmin


class EUserAdmin(UserAdmin):
    def get_readonly_fields(self, request, obj=None):
        # We make the field uneditable if the user is not a superuser
        return super().get_readonly_fields(request) if request.user.is_superuser else ('is_superuser',)

    def get_queryset(self, request):
        qs = super().get_queryset(request)
        # and also exclude all superusers from queryset if the user is not a superuser
        return qs if request.user.is_superuser else qs.exclude(is_superuser=True)

Мұндай шектеулер суперпайдаланушыны әкімшіліктен қалыпты пайдаланушылар өңдеуінен қорғағыңыз келсе пайдалы.

Осы тақырып бойынша ұсынылатын мақалалар

Мақала бойынша сұралады0сұрақтар(лар)

2

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз