2015-12-19 21 views
1

我需要在現有的基於Django的Web服務中使用模型級權限。我想添加的權限類型是django admin的默認值(「添加」,「更改」,「刪除」),並且已經存在(我可以在管理員中看到它們)。如何在現有的Django項目中批量分配模型級權限?

我已經有很多用戶數據庫,所以手動權限分配是不可能的。

如何爲我的應用程序中的模型子集自動爲每個現有用戶和未來用戶分配這些權限?

回答

0

您可以使用組來做到這一點,利用get_or_create方法,如下面的代碼:

from django.contrib.auth.models import Group, Permission, User 
from django.contrib.contenttypes.models import ContentType 

content_type = ContentType.objects.get_for_model(User) 
add_permission = Permission.objects.get(content_type=content_type,codename='add_user') 
change_permission = Permission.objects.get(content_type=content_type,codename='change_user') 
delete_permission = Permission.objects.get(content_type=content_type,codename='delete_user') 

group, created = Group.objects.get_or_create(name='your_group') 
if created: #assign permission to all users in database 
    group.permissions.add(add_permission, change_permission, delete_permission) 
    for user in User.objects.all(): 
     user.groups.add(group) 

這樣,如果還沒有創建組,創建它,在你的數據庫中添加的所有用戶到它並添加你想要的權限。此外,對於每一個新用戶要添加這些權限,你應該把它添加到組,所以下面的代碼應該去他們的創作:

groupGroup.objects.get(name='your_group') 
user.groups.add(group) 

有關文檔,單擊here

+0

所以應該某種自定義腳本或遷移? – Warwick

+0

只需將代碼添加到管理員,你應該沒問題 –

相關問題