gpt4 book ai didi

python - 如何内存 Django 模型对象的昂贵计算?

转载 作者:太空狗 更新时间:2023-10-29 17:09:54 25 4
gpt4 key购买 nike

我的 UserProfile 对象上有几个包含 JSON 对象的 TextField 列。我还为每一列定义了一个 setter/getter 属性,它封装了将 JSON 序列化和反序列化为 python 数据结构的逻辑。

此数据的性质确保它会在单个请求中被 View 和模板逻辑多次访问。为了节省反序列化成本,我想在读取时记住 python 数据结构,在直接写入属性时失效或从模型对象保存信号。

我在哪里/如何存储备忘录?我对使用实例变量感到紧张,因为我不了解查询实例化任何特定 UserProfile 背后的魔力。 __init__ 使用安全吗?还是我需要在每次读取时通过 hasattr() 检查 memo 属性是否存在?

这是我当前实现的一个示例:

class UserProfile(Model):
text_json = models.TextField(default=text_defaults)

@property
def text(self):
if not hasattr(self, "text_memo"):
self.text_memo = None
self.text_memo = self.text_memo or simplejson.loads(self.text_json)
return self.text_memo
@text.setter
def text(self, value=None):
self.text_memo = None
self.text_json = simplejson.dumps(value)

最佳答案

您可能对内置的 django 装饰器 django.utils.functional.memoize 感兴趣。

Django 使用它来缓存昂贵的操作,如 url 解析。

关于python - 如何内存 Django 模型对象的昂贵计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1526191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com