2015-02-07 39 views
0

我有一個很多列的大型數據庫表。類似這樣的:django中數據庫表的各個列的權限?

+------------+-------+-------+-----+--------+ 
| postalcode | stat1 | stat2 | ... | stat70 | 
+------------+-------+-------+-----+--------+ 
| V0A1A1  | 0.1 | 10 | ... | 100 | 
| V0A1A2  | 0.4 | 20 | ... | 300 | 
| V0A1A3  | 0.2 | 40 | ... | 200 | 
| ....  | ... | ... | ... | ... | 
| Z9Z9Z9  | 0.3 | 30 | ... | 400 | 
+------------+-------+-------+-----+--------+ 

我的django應用程序當前通過簡單的SQL查詢爲所有用戶提供訪問權限。

我希望能夠通過Django API訪問數據,特別是我希望能夠賦予特定用戶對錶中某些列的權限而不是其他權限。

我應該如何用django模型來解決這個問題?

我應該讓每一列都有一個不同的模型,並有相應的表格嗎?這將是很多模型,並有很多表格!

或者我應該爲整個表創建一個模型?這將是很多領域!我將如何處理鏈接用戶到字段?

或者我不應該創建表的django模型,而是創建一個跟蹤表列的權限的元模型,並以某種方式使用它來調解SQL查詢到數據表?

+------+--------+------------+ 
| user | column | permission | 
+------+--------+------------+ 
| 1 | stat1 | true  | 
| 2 | stat1 | false  | 
| 2 | stat2 | false  | 
| 3 | stat1 | true  | 
| 1 | stat3 | false  | 
| ... | ... | ...  | 
| 100 | stat70 | true  | 
+------+--------+------------+ 

這似乎不是很django-y莫名其妙。

我希望有一個更清潔,更Django的解決方案,但它不會發生在我身上。建議?

回答

1

我認爲最好的解決方案在很大程度上取決於「碎片化」的權限。如果只有幾個用戶組可以訪問不同的一組列,則可以將這些列放入多個模型中。

如果權限可能非常獨立,並且通常需要來自所有70列或其各種組合的數據,請將其保留在一個表中(以避免幾十個聯接)幷包含您所描述的權限模型。

django.contrib.auth.permissions應該給你已經你需要:創建70權限對象,每列,和他們要麼映射到單個用戶或用戶組(取決於你的個性的等級許可的載體)

+0

謝謝ascripter!我的情況絕對是你描述的第二個 - 高度細化的,用戶特定的(或者至少它可能變得如此,所以我需要對它進行計劃)。 – 2015-02-07 17:25:18