天天看點

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