我想创建一个权限表,它将django用户和另一个表作为其外键。然后授予它权限。在models.py中应该有什么?如何在Django中独立于用户权限创建权限表?
的疑问,可以把跨作为两个单独的问题:
- 如何使用Django的用户(用户ID)在另一个应用程序中的外键被称为 权限。
- 如何使用由Django的产生,当执行syncdb是 完成为
该表(不同的应用程序)的priamry键,将用作该应用程序的权限外键表-ID。
我想创建一个权限表,它将django用户和另一个表作为其外键。然后授予它权限。在models.py中应该有什么?如何在Django中独立于用户权限创建权限表?
的疑问,可以把跨作为两个单独的问题:
- 如何使用Django的用户(用户ID)在另一个应用程序中的外键被称为 权限。
- 如何使用由Django的产生,当执行syncdb是 完成为
该表(不同的应用程序)的priamry键,将用作该应用程序的权限外键表-ID。
您最好创建一个User Profile - 这是一个可链接到User模型的模型,其中Profile模型包含您想要的任何键。然后你可以调用User.get_profile(),并获得一个模型对象,检查它有什么键。
对于该模型,您需要查看.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()
是否有一个原因,你不能在django.contrib.auth使用权限的功能?通过使用Meta
对象的permissions
功能和Groups
表,您可以轻松创建“X组用户可执行操作Y”的矩阵。
我越想到这一点,您的实现似乎越能反映组/权限功能,而没有额外的好处。详情请参阅https://docs.djangoproject.com/en/1.3/topics/auth/。
看到可能发生的问题是这样的。我不是从用户端授予权限,而是从文件上传端授予权限。当用户上传文件时,他只允许某些用户查看/修改文件。我认为用户给出的这个权限只允许我从用户的角度来看,而不是从文件的角度来看 – Hick 2011-06-11 17:49:37
一旦我有了给我奇怪的整数值的外键。如何使用外键来引用它是主键的表? – Hick 2011-06-23 22:07:23
您需要阅读我链接的内容类型文档。 – Hutch 2011-06-30 19:37:14