Gor*_*oro 11 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 __unicode__(self):
return self.user
Run Code Online (Sandbox Code Playgroud)
和
class Site(models.Model):
site_name = models.CharField(max_length = 512)
...Other stuff...
def __unicode__(self):
return self.user
Run Code Online (Sandbox Code Playgroud)
这是基本的多对多内容:
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.
Run Code Online (Sandbox Code Playgroud)
如果你不想杂乱Site
,你也可以创建一个中间的"通过"表.这会创建一个间接层,但允许您根据需要将权限添加到直通表中(如果需要).您可以使用该表上的auth
模块groups
功能来定义"可以访问密钥的组"和"可以修改属性的组"等.
归档时间: |
|
查看次数: |
5142 次 |
最近记录: |