2011-06-11 79 views
0

我想創建一個權限表,它將django用戶和另一個表作爲其外鍵。然後授予它權限。在models.py中應該有什麼?如何在Django中獨立於用戶權限創建權限表?

的疑問,可以把跨作爲兩個單獨的問題:

  1. 如何使用Django的用戶(用戶ID)在另一個應用程序中的外鍵被稱爲 權限。
  2. 如何使用由Django的產生,當執行syncdb是 完成爲

該表(不同的應用程序)的priamry鍵,將用作該應用程序的權限外鍵表-ID。

回答

0

您最好創建一個User Profile - 這是一個可鏈接到User模型的模型,其中Profile模型包含您想要的任何鍵。然後你可以調用User.get_profile(),並獲得一個模型對象,檢查它有什麼鍵。

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() 
+0

一旦我有了給我奇怪的整數值的外鍵。如何使用外鍵來引用它是主鍵的表? – Hick 2011-06-23 22:07:23

+0

您需要閱讀我鏈接的內容類型文檔。 – Hutch 2011-06-30 19:37:14

1

是否有一個原因,你不能在django.contrib.auth使用權限的功能?通過使用Meta對象的permissions功能和Groups表,您可以輕鬆創建「X組用戶可執行操作Y」的矩陣。

我越想到這一點,您的實現似乎越能反映組/權限功能,而沒有額外的好處。詳情請參閱https://docs.djangoproject.com/en/1.3/topics/auth/

+0

看到可能發生的問題是這樣的。我不是從用戶端授予權限,而是從文件上傳端授予權限。當用戶上傳文件時,他只允許某些用戶查看/修改文件。我認爲用戶給出的這個權限只允許我從用戶的角度來看,而不是從文件的角度來看 – Hick 2011-06-11 17:49:37