Django每对象权限
我有一些用户,每个人都与允许他们访问的房地产列表相关联。多个用户可能具有查看同一站点的权限 我要如何在django建立这个 我有:Django每对象权限,django,django-models,rbac,Django,Django Models,Rbac,我有一些用户,每个人都与允许他们访问的房地产列表相关联。多个用户可能具有查看同一站点的权限 我要如何在django建立这个 我有: class UserProfile(models.Model): user = models.OneToOneField(User) last_session_time_online = models.IntegerField() total_time_online = models.IntegerField() def __unic
class UserProfile(models.Model):
user = models.OneToOneField(User)
last_session_time_online = models.IntegerField()
total_time_online = models.IntegerField()
def __unicode__(self):
return self.user
和
class Site(models.Model):
site_name = models.CharField(max_length = 512)
...Other stuff...
def __unicode__(self):
return self.user
这是基本的多对多内容:
class Site(models.Model):
site_name = models.CharField(max_length = 512)
allowed_users = models.ManyToManyField(User)
...
sam = User.objects.get(username = 'sam')
frodo = User.objects.get(username = 'frodo')
hobbithole = Site.objects.get(site_name = 'The Hobbit Hole')
hobbithole.allowed_users.add(sam, frodo)
frodo.site_set.all() # Should return "The Hobbit Hole" object, and any other place frodo's allowed to visit.
somesite.allowed_users.exists(user = frodo) # returns True if frodo is in the site's set of allowed users.
如果您不想让站点变得杂乱无章
,还可以创建一个中间的“直通”表。这将创建一个间接层,但如果需要,允许您向through表添加权限级别之类的内容。您可以使用该表上的auth
模块的groups
功能来定义“可以访问密钥的组”和“可以修改属性的组”等等
这是最近才提出来的,但我找不到相关的问题。以下是我从讨论中保存的一些链接,供以后阅读:
- -Django文件
- -俄勒冈州立大学开放源码实验室
- -华盛顿时报
Meta
子类添加代码:
class Meta:
permissions = (
('edit_this_model', 'Edit this model'),
)
如果您使用的是south,则可能需要在更新模型后运行manage.py syncdb--all
要测试用户是否经过身份验证,请使用以下命令:
user.has_perm('your_app_name. edit_this_model')
试试Django Guradian。您可以使用它为用户/组分配对象级权限。
Site
这里不是Django contrib.Site对象,而是允许用户访问的属性,对吗?