1

我正在使用 Django 管理工具,我有非常简单的模型。我想限制对特定用户或特定组的特定密码的访问。如何为访问“是/否/从不”设置 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
4

2 回答 2

1

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

支持对象级(行级)权限,但 django 并没有提供开箱即用的实现:

对象级权限

添加了在每个对象级别指定权限的基础。虽然核心中没有实现,但自定义身份验证后端可以提供此实现,并将由 django.contrib.auth.models.User 使用。有关更多信息,请参阅身份验证文档。

因此,有像django-guardian这样的第三方应用程序可以启用此功能。

于 2012-05-24T20:25:46.560 回答
0

由于您正在与管理员合作,因此您可以覆盖has_add_permission,has_change_permission和. 但是,如果不知道您的“是/否/从不”权限是如何附加到用户/组的,我真的无法进一步帮助您。has_delete_permissionModelAdmin

更新

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

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

于 2012-05-24T20:41:15.410 回答