django 中数据库 table 的各个列的权限?
Permissions for individual columns of a database table in django?
我有一个包含很多列的大型数据库 table。像这样:
+------------+-------+-------+-----+--------+
| 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 访问数据,特别是我希望能够向特定用户授予对 table 中某些列的权限,而不是其他列。
在 Django 模型方面我应该如何处理这个问题?
我是否应该将每一列设为不同的模型,并具有相应的 table?那将是很多模型,还有很多 tables!
或者我应该为整个 table 创建一个模型吗?那将是很多领域!我将如何处理将用户链接到字段?
或者我根本不应该为 table 创建一个 django 模型,而是创建一个元模型来跟踪 table 列的权限,并使用它以某种方式调解 SQL 查询数据 table?
+------+--------+------------+
| user | column | permission |
+------+--------+------------+
| 1 | stat1 | true |
| 2 | stat1 | false |
| 2 | stat2 | false |
| 3 | stat1 | true |
| 1 | stat3 | false |
| ... | ... | ... |
| 100 | stat70 | true |
+------+--------+------------+
这似乎不太像 django-y。
我希望可能有一个更干净、更 django 的解决方案来解决这个问题,但我没有想到。建议?
我认为最好的解决方案在很大程度上取决于 "fragmented" 权限。如果只有几个用户组,每个用户组都可以访问一组不同的列,您可以将这些列放入多个模型中。
如果权限可以是高度独立的,并且您通常需要来自所有 70 列或其不同组合的数据,请将其保存在一个 table 中(也可以避免数十个连接)并包括像您这样的权限模型描述。
django.contrib.auth.permissions
应该已经给了你所需要的:创建 70 个权限对象,每列一个,并将它们映射到单个用户或用户组(取决于你的权限的个性等级-向量)
我有一个包含很多列的大型数据库 table。像这样:
+------------+-------+-------+-----+--------+
| 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 访问数据,特别是我希望能够向特定用户授予对 table 中某些列的权限,而不是其他列。
在 Django 模型方面我应该如何处理这个问题?
我是否应该将每一列设为不同的模型,并具有相应的 table?那将是很多模型,还有很多 tables!
或者我应该为整个 table 创建一个模型吗?那将是很多领域!我将如何处理将用户链接到字段?
或者我根本不应该为 table 创建一个 django 模型,而是创建一个元模型来跟踪 table 列的权限,并使用它以某种方式调解 SQL 查询数据 table?
+------+--------+------------+
| user | column | permission |
+------+--------+------------+
| 1 | stat1 | true |
| 2 | stat1 | false |
| 2 | stat2 | false |
| 3 | stat1 | true |
| 1 | stat3 | false |
| ... | ... | ... |
| 100 | stat70 | true |
+------+--------+------------+
这似乎不太像 django-y。
我希望可能有一个更干净、更 django 的解决方案来解决这个问题,但我没有想到。建议?
我认为最好的解决方案在很大程度上取决于 "fragmented" 权限。如果只有几个用户组,每个用户组都可以访问一组不同的列,您可以将这些列放入多个模型中。
如果权限可以是高度独立的,并且您通常需要来自所有 70 列或其不同组合的数据,请将其保存在一个 table 中(也可以避免数十个连接)并包括像您这样的权限模型描述。
django.contrib.auth.permissions
应该已经给了你所需要的:创建 70 个权限对象,每列一个,并将它们映射到单个用户或用户组(取决于你的权限的个性等级-向量)