如何限制对django中特定行的访问

时间:2012-05-24 20:14:07

标签: python django django-admin django-admin-tools

我正在使用Django Admin Tool,我的模型非常简单。我想限制特定用户或特定组的特定密码的访问权限。我怎样才能为访问'是/否/从'做出3条件,当用户得到是+他的组时没有,那么他可以访问但是当有,+从不然后没有。我怎样才能使用django-admin-tools权限系统。

from django.db import models
from passwords.objects.labels.models import Label

class Password(models.Model):
    class Meta:
        db_table = 'passwords'

    name = models.CharField(max_length=32)
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
    labels = models.ManyToManyField(Label)

    def __unicode__(self):
        return self.name

2 个答案:

答案 0 :(得分:1)

开箱即用,django仅支持类级别权限(换句话说,上的权限)。

支持对象级(行级)权限,但django没有随附实现:

  

对象级权限

     

在每个对象级别指定权限的基础有   已被添加。虽然核心没有实现这一点,但是   自定义身份验证后端可以提供此实现和它   将由django.contrib.auth.models.User使用。见   身份验证文档以获取更多信息。

因此,有django-guardian等第三方应用启用此功能。

答案 1 :(得分:0)

由于您正在使用管理员,因此您可以覆盖has_add_permission上的has_change_permissionhas_delete_permissionModelAdmin方法。但是,如果不了解您的“是/否/从”权限如何附加到用户/组,我无法真正帮助您。

<强>更新

如果你想让它保持简单,那么最好的方法就是简单地创建一个组,例如“PasswordAccess”。然后,将您想要的任何用户分配给该组,并仅将Password的默认添加,更改和删除权限分配给该组。

不需要其他任何东西。添加到该组的任何用户都将自动继承Password的权限,任何其他用户都不会拥有这些权限,因此甚至不会在管理员中看到它。