如何在Django中创建一个独立于用户权限的权限表?

时间:2011-06-11 17:13:46

标签: django django-permissions

我想创建一个权限表,它将django-users和另一个表作为其外键。然后赋予它权限。 models.py中应该有什么?

怀疑可以作为两个单独的问题加以说明:

  
      
  1. 如何在另一个名为的app中使用django-users(用户id)作为外键   权限。
  2.   
  3. 如何使用syncdb时由django生成的table-id   作为
  4. 的priamry键完成   

该表(不同的应用程序),用作此应用程序权限的外键。

3 个答案:

答案 0 :(得分:1)

是否有理由不能使用django.contrib.auth中的权限功能?通过使用permissions对象和Meta表的Groups功能,您可以轻松创建“X组中的用户可以执行操作Y”的矩阵。

我越是想到这一点,您的实现似乎就越能反映群组/权限功能而没有额外的好处。

有关详细信息,请参阅https://docs.djangoproject.com/en/1.3/topics/auth/

答案 1 :(得分:0)

您最好的方法是创建一个User Profile - 这是一个可以链接到User模型的模型,其中Profile模型包含您想要的任何键。然后你可以调用User.get_profile(),获取一个模型对象,检查它有哪些键。

答案 2 :(得分:0)

对于模型,您需要查看.contrib中的ContentTypes应用程序。 (https://docs.djangoproject.com/en/1.3/ref/contrib/contenttypes/)您可以为用户创建一个外键。

from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType

class Permission(models.Model):
    user = models.ForeignKey(User)
    table = models.ForeignKey(ContentType)
    ### the rest of the model.

然后在你看来或其他什么:

perm = Permission()
perm.user = request.user
perm.table = ContentType.objects.get_for_model(TableToAddPermissionFor)
perm.save()