【问题标题】:Django - Update model data before access?Django - 在访问之前更新模型数据?
【发布时间】:2010-01-26 03:05:13
【问题描述】:

关于如何在每次访问时更新模型数据的任何指示?

如果我有访问 Person 对象的代码,如下所示: p = Person.objects.get(username='darkpixel')

我想启动自己的流程来检查外部站点,并可能在返回之前更新 Person 模型。

我对重写 get 方法犹豫不决。有没有更好的办法?

【问题讨论】:

    标签: django-models


    【解决方案1】:

    该代码绝对属于您的Manager。我不会覆盖get,但我会创建一个名为get_and_resync 的函数来为您完成这项工作。

    【讨论】:

    • 这就是我的原型开发的方向,而且它似乎运行良好——我只需要确保导入我的应用程序的所有项目偶尔调用 get_and_resync... 另一个选项我正在考虑的不是担心调用 get_and_resync 的项目,而是有一个 manage.py 命令,它可以缓慢地遍历数据库并根据需要更新内容...
    • 在进行了更多的挖掘之后,我偶然发现了一些我不知道的经理人有趣的事情。如果您创建一个 get_query_set 函数,则您定义用于通过 Person.objects.all 或 Person.objects.get 查找数据的初始查询集。这使得在返回对象之前拦截和更新对象变得容易。
    【解决方案2】:

    把模型上的字段变成properties

    【讨论】:

    • 有没有办法做到这一点,而无需更改依赖于(使用您的链接示例)Person.first_name 的现有代码?我试图获得的结果是从我的数据库支持的模型中访问数据,但偶尔会从远程 Web 服务检查 Person 的更新。
    • 属性通常不需要更改现有代码,所以我不确定你在这里问什么......
    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 2018-05-31
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2016-08-12
    相关资源
    最近更新 更多