天天看点

django框架源代码中的自主生成权限表-auth_user_groups

作者:不易9093

Django框架中默认表auth_user_groups是用于管理用户组的表,其字段格式如下:

字段名 类型 描述

id int 用户组ID

name varchar(80) 用户组名称

其中,id字段是自增的,name字段用于存储用户组的名称。

在使用Django框架时,我们可以通过auth模块来操作auth_user_groups表。例如,我们可以通过以下代码创建一个名为test_group的用户组:

from django.contrib.auth.models import Group
group = Group(name='test_group')
group.save()           

我们还可以通过以下代码将一个名为test_user的用户添加到test_group用户组中:

from django.contrib.auth.models import User, Group
user = User.objects.get(username='test_user')
group = Group.objects.get(name='test_group')
user.groups.add(group)           

上述代码中,我们首先通过User.objects.get()方法获取名为test_user的用户实例,然后通过Group.objects.get()方法获取名为test_group的用户组实例,并将用户实例添加到用户组中。

除此之外,我们还可以使用Group.objects.filter()方法获取符合条件的用户组实例列表,使用group.user_set.all()方法获取一个用户组中的所有用户实例列表等等。

django框架源代码中的自主生成权限表-auth_user_groups

*****题外话******

class Meta(): 应用和作用!!!!

db_table=声明在数据库中对应的表名,不声明django会自动命名为app名_类名

app_label=这个字段仅在你的模型类不在默认的models.py文件内,用于指定此模型所属的app,内容为所属app的名字

get_latest_by=这个字段指示django的get_latest()按照哪个字段查询。应为一个模型字段名,此字段为DateField或者DateTimeField

managed=Boolean值,Boolean当其为真。django按照Model类修改数据库表,当其为假,django不会进行这些操作。

ordering=这个字段指示django返回的数据按照哪个字段排序。为一个DateField或DateTimeField。

verbose_name=此模型的别名。这个字段也可用于模型中的字段。有点拗口,这个选项也可以在模型中的列名中单独设置这里设置的是表的别名,那里设置的是列的别名=.=。

django框架源代码中的自主生成权限表-auth_user_groups

*****题外话******

在Django框架中,auth_group_permissions表用于存储用户组所拥有的权限。其包含以下字段:

  • id:权限ID,是一个自增主键。
  • groupid:用户组ID,与auth_group表中的ID字段关联。
  • permissionid:权限ID,与auth_permission表中的ID字段关联。

通过auth_group_permissions表,可以将用户组与权限进行关联。例如,我们可以创建一个拥有“编辑文章”和“删除文章”权限的用户组,然后将这些权限与用户组进行关联,使得拥有该用户组的用户可以进行文章的编辑和删除操作。

使用Django框架,我们可以通过以下方式访问auth_group_permissions表:

from django.contrib.auth.models import Group, Permission

# 获取名为“编辑者”的用户组
editor_group = Group.objects.get(name='编辑者')           
# 获取名为“can_edit_article”的权限
edit_permission = Permission.objects.get(codename='can_edit_article')           
# 将权限与用户组进行关联
editor_group.permissions.add(edit_permission)           
# 获取名为“can_delete_article”的权限
delete_permission = Permission.objects.get(codename='can_delete_article')           
# 将权限与用户组进行关联
editor_group.permissions.add(delete_permission)           

通过以上代码,我们成功地将“编辑者”用户组与“编辑文章”和“删除文章”权限进行了关联。现在,拥有该用户组的用户就可以进行文章的编辑和删除操作了。

django框架源代码中的自主生成权限表-auth_user_groups