请教如何在 sqlalchemy model 的 event 里面停止删除或者用其他方式实现软删除

2022-02-15 02:39:37 +08:00
 efrigate43

如题

model


def crudset(classModel):
from datetime import datetime as dt

    @event.listens_for(classModel, "before_insert")
    def model_brfore_insert(target, value, initiator):
        initiator.dt_create = dt.now().strftime("%Y-%m-%d %H:%M:%S")

    @event.listens_for(classModel, "before_update")
    def model_brfore_update(target, value, initiator):
        initiator.dt_update = dt.now().strftime("%Y-%m-%d %H:%M:%S")

    @event.listens_for(classModel, "before_delete")
    def model_before_delete(target, value, initiator):
        from copy import deepcopy

        item = deepcopy(initiator)
        item.dt_delete = dt.now().strftime("%Y-%m-%d %H:%M:%S")

        print(str(item))
    

正在写 model_before_delete 这个方法,如何能把 dt_delete 这个字段的值 作为软删除的标志,并且停止当前删除的操作,已达到软删的目的,又或者有什么软删的附加库可用吗?

我初学者刚接触不久 请各位大佬赐教

2173 次点击
所在节点    Python
3 条回复
Latin
2022-02-15 09:48:28 +08:00
手动实现 软删除标识字段赋值
Latin
2022-02-15 10:03:48 +08:00
lolizeppelin
2022-02-15 10:50:59 +08:00
如果你的删除是 object.delete()的方式 重写 delete 方式就好把?

全局的话在监听事件里似乎不能直接做到啊,sqlalchemy 代码太复杂了建议不要这么搞....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/833886

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX