2012-09-12 66 views
29

我需要實現用戶組的用戶權限(非常類似於Facebook的羣體)。例如,每個組可以具有如下權限的成員:can_post,can_delete,can_ban等。當然,一個用戶可以是多個組的成員,並且組可以具有許多具有不同權限的不同用戶。 我需要什麼模型來實現此功能?用戶組和權限

回答

59

的Django有一個內置的組系統。每當你有這樣的問題,我推薦searching the Django docs,這是廣泛的,有益的,寫得很好。

只要您使用的是django.contrib.auth應用程序,您可以訪問組。然後,您可以爲這些組分配權限。

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

content_type = ContentType.objects.get(app_label='myapp', model='BlogPost') 
permission = Permission.objects.create(codename='can_publish', 
             name='Can Publish Posts', 
             content_type=content_type) 
user = User.objects.get(username='duke_nukem') 
group = Group.objects.get(name='wizard') 
group.permissions.add(permission) 
user.groups.add(group) 
+4

在哪個文件中你通常會放這段代碼? –

+0

上面的代碼創建記錄,所以它就是你在shell中運行的東西。如果您想分發或部署應用程序,則需要進行設置,以便保存此初始數據。我相信你也可以在網站的管理員中修改它們。 –

+0

同樣的事情,我與我做了,做了殼或管理員,然後生成一個夾具加載未來的應用程序的實例。感謝您的回覆 –