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 个权限对象,每列一个,并将它们映射到单个用户或用户组(取决于你的权限的个性等级-向量)