我想創建一個權限表,它將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