我正在开发一个Django应用程序作为某个Oracle数据库的Web前端,另一个本地数据库保存应用程序的数据,如Guardian权限。问题是它可以从我无法控制的不同地方进行修改。
假设我们有3个模型:User
,Thesis
和UserThesis
。
UserThesis
- 指定Thesis
与User
之间关系的表格(User
的共同作者Thesis
)
情景:
User
作为Thesis
的作者被删除,删除了其他应用在UserThesis
表中的条目。
User
尝试使用我们的Django应用修改Thesis
。他成功了,因为Guardian和Django不知道UserThesis
的变化。
我想到了一些解决方案:
让一些cron作业通过检查修改日期来查找UserThesis
中的更改。易于检查添加,删除将需要再次查看所有关系。
修改Oracle DB架构以在UserThesis
表上添加Guardian DB表并创建触发器。我不想这样做,因为Oracle DB在许多不同的应用程序之间共享。
手动检查视图和模板中的关系(Oracle上的负载较重)。
哪一个最好?还有其他想法吗?
答案 0 :(得分:0)
我决定手动检查权限,尽可能地缓存它。我最终得到了get_perms_from_cache(自我,用户)模型方法,这对我有很大帮助。