2012-09-12 40 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

同样的事情,我与我做了,做了壳或管理员,然后生成一个夹具加载未来的应用程序的实例。感谢您的回复 –