python - 只读 Django 对象管理器?

标签 python django

我正在进行积极的缓存,我想确保没有人意外地编写直接更新数据库的代码。我想解决这个问题的方法是重命名普通对象管理器 .rw_objects 以供缓存使用,并将 .objects 替换为记录警告的管理器非更新访问,如果有人尝试从中进行更新,则会引发异常。

我已经编写了一个对象管理器和一个查询集,但我不确定如何检查查询是否正在更新数据库。

有什么建议吗?

最佳答案

我在这里考虑两种方法。

  1. 创建自定义管理器,覆盖_insert() , _update()引发异常/记录查询,以及 get_query_set()返回覆盖 create() 的自定义查询集, get_or_create() ,和update() .

  2. 如果您使用的是 django 1.2,请在 settings.py 中创建另一个数据库连接称之为"READ_ONLY" ,并创建一个使用该连接返回 QuerSet 的自定义管理器(如 def get_query_set() return super(ReadOnlyManager, self).get_query_set().using("READ_ONLY") ,并将连接标记为只读。(一种方法是为数据库连接 "READ_ONLY" 创建只读用户......如果你正在使用 Postgres,你可以做类似 How do you create a read-only user in PostgreSQL? )

关于python - 只读 Django 对象管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4493385/

相关文章:

python - 谷歌 Oauth2-redirect_uri_mismatch 400

python - Django 模型继承覆盖字段属性中使用的变量

django - 反向自定义django管理网站网址?

python - Django Rest Framework 指定电子邮件必须是唯一的

python - Django 模板 - 打印逗号分隔的 ManyToManyField,将结果列表排序到字典中?

python - cv2.floodfill 如何工作?

Python 一个统计文件行数和字符数的函数

python - 有效日期范围单热编码 groupby

jquery - 当向我的表单集中添加新的内联时,我的日期选择器停止工作

python - 在Python中使用FIR滤波器firwin后信号的相移