django-BaseCommand自带的权限分组

note:  应该是这样的结构,并且commands名字是固定的。 执行: python manage.py  initgroup

initgroup.py

# -*- coding: utf-8 -*-
from django.core.management import BaseCommand
from django.contrib.auth.models import Group, Permission, ContentType

from apps.news.models import News, NewsCategory, Comment
from apps.cms.models import Banners
from apps.course.models import Course, CourseOrder, Category


class Command(BaseCommand):
    def handle(self, *args, **options):
        # 编辑组/财务组/管理员组/超级管理员
        # python manage.py initgroup
        # 编辑人员权限:编辑文章/轮播图/付费资讯/课程

        # 创建编辑组
        # model对应的app名字   !!!get_for_model not is get_for_models
        edit_content_types = [
            ContentType.objects.get_for_model(News),
            ContentType.objects.get_for_model(NewsCategory),
            ContentType.objects.get_for_model(Banners),
            ContentType.objects.get_for_model(Comment),
            ContentType.objects.get_for_model(Course),
            ContentType.objects.get_for_model(Category),
        ]
        # 添加权限
        # 查找出这些models需要的权限
        edit_permissions = Permission.objects.filter(content_type__in=edit_content_types)

        # 创建权限组的名字
        editGroup = Group.objects.create(name='编辑')
        # 添加权限
        editGroup.permissions.set(edit_permissions)

        # 2.创建财务组
        finance_content_types = [
            ContentType.objects.get_for_models(CourseOrder)
        ]
        finance_permissions = Permission.objects.filter(content_type__in=finance_content_types)
        finance_group = Group.objects.create(name='财务组')
        finance_group.permissions.set(finance_permissions)

        # 3.创建管理员,拥有财务和编辑权限
        admin_permissions = edit_permissions.union(finance_permissions)
        admin_group = Group.objects.create(name='管理员')
        admin_group.permissions.set(admin_permissions)

        self.stdout.write(self.style.SUCCESS("初始化分组成功"))

 权限分组完成,权限验证场景: https://www.cnblogs.com/tangpg/p/9431620.html

原文地址:https://www.cnblogs.com/tangpg/p/9428980.html