Python 通过Django模型声明性地设置Postgres表的权限?
我们有两个不同的小组在同一个Django数据库上工作:Python 通过Django模型声明性地设置Postgres表的权限?,python,django,postgresql,django-models,Python,Django,Postgresql,Django Models,我们有两个不同的小组在同一个Django数据库上工作: 网络团队 一组数据科学家 我们希望让数据科学家能够轻松地使用Django模型读取/写入表的子集,但不允许他们对其余表进行写入/删除访问 我们目前的想法是,我们希望使用GRANT和REVOKE样式的SQL语句锁定数据层(Postgres)中的表,但我们希望在模型中管理这些权限 我们有两个角色: 数据\u科学家\u rw web\u团队管理 我们不希望在每次迁移中手动写入GRANT和REVOKE权限,而是希望在模型上有一个装饰器或一个元类变量,
数据\u科学家\u rw
web\u团队管理
进行迁移时,它将自动生成正确的SQL
# data_scientists/models.py (pseudocode)
class DataScientistModel(models.Model):
...
my_special_number = models.FloatField()
...
class Meta:
data_science_team_editable = True
进行迁移:
$ ./manage.py makemigrations
自动生成的模型(伪代码):
问题:
这种做法是否明智李>
我如何钩住makemigrations
,以便自动生成RunSQL代码
# migrations/0008_new_data_scientist_model.py
...
if data_science_team_editable:
RunSQL('GRANT INSERT, UPDATE, DELETE ON {tablename} TO data_scientists_rw;')
...