我有一个包含许多列的大型数据库表。像这样:
+------------+-------+-------+-----+--------+
| 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解决方案,但它并没有发生在我身上。建议?
答案 0 :(得分:1)
我认为最好的解决方案在很大程度上取决于"支离破碎"权限将是。如果只有少数用户组可以访问一组不同的列,则可以将这些列放入多个模型中。
如果权限可以是高度个性化的,并且您通常需要来自所有70列或其不同组合的数据,请将其保存在一个表中(也是为了避免数十个连接)并包含您所描述的权限模型。
django.contrib.auth.permissions
应该已经为您提供了所需的内容:创建70个权限对象,每列一个,并将它们映射到单个用户或用户组(取决于您的权限向量的个性等级) )