我正在寻找一种最佳方法来精确控制特定User
可以从数据库中检索的内容。
当前设计实现了User
和License
模型,是一对多关系,以及许多连接的实体,例如Country
,City
,{{ 1}}等等。某些实体(例如Person
)应限于根据Country
字段进行查看,因此我希望能够为License
分配查看权限以查看{{} 1}}添加user = User(id=1, name="Adam")
。现在最棘手的部分是,我想通过使用来自france = Country(id=1, name="France")
的数据扩充查询来以某种方式应用于所有查询,因此基于License(user=user, countries=[france])
设置上下文。
更重要的是,我想确保,例如,如果用户要查询来自License
的10个结果(User
上有FK) ,用户只会看到City
内有Country
要查看的城市。
我假设没有开箱即用的SQLAlchemy扩展来定义这样的关系,但也许你可以指出我正确的方向在哪里以这样的形式连接统治 - 通过子类化查询,或者可能是一些其他方式?
理想情况下,界面允许我执行以下操作:Countries
,其中License
负责内省查询并根据&#39应用正确的City.query.filter(..).restrict_for(user).all()
;正在检索并且restrict_for
可用。