您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django – 覆盖保存方法时检查旧值和新值之间的差异

5b51 2022/1/14 8:22:59 python 字数 2423 阅读 551 来源 www.jb51.cc/python

谢谢你的时间. 我在Django 1.4中,我有以下代码:它是我的Quest模型的覆盖保存方法. @commit_on_success def save(self, *args, **kwargs): from ib.quest.models.quest_status_update import QuestStatusUpdate created = not self.pk

概述

我在Django 1.4中,我有以下代码:它是我的Quest模型的覆盖保存方法.

@commit_on_success
def save(self,*args,**kwargs):
    from ib.quest.models.quest_status_update import QuestStatusUpdate
    created = not self.pk

    if not created:
        quest = Quest.objects.get(pk=self)
        # CHECK FOR SOME OLD VALUE
    super(Quest,self).save(*args,**kwargs)

我找不到一个聪明的做法.对于我正在更新的对象,为了找出一个旧的实例值,对我来说,似乎非常愚蠢.

有没有更好的方法来做到这一点?

谢谢你们.

弗朗西斯科

一种常见的模式是使用预先保存的信号(或者将这些代码直接放在你的save()方法中),如你所做的那样):

old_instance = MyModel.objects.get(pk=instance.pk)
# compare instance with old_instance,and maybe decide whether to continue

如果要保留旧值的缓存,那么您可能会在查看代码中执行此操作:

from copy import deepcopy
object = MyModel.objects.get(pk=some_value)
cache = deepcopy(object)

# Do something with object,and then compare with cache before saving

django开发人员还有a recent discussion以及其他一些可能的解决方案.

总结

以上是编程之家为你收集整理的Django – 覆盖保存方法时检查旧值和新值之间的差异全部内容,希望文章能够帮你解决Django – 覆盖保存方法时检查旧值和新值之间的差异所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶