我有包含JSON对象我的用户配置对象上几个文本字段列。 我还限定的设定器/吸气剂属性它封装用于序列化和反序列化JSON成蟒数据结构的逻辑的每一列。
该数据的性质将确保自己在单个请求中被访问由视图和模板逻辑多次。 为了节省成本的反序列化,我想memoize的在读蟒蛇数据结构,无效直接写的财产或从模型对象保存信号。
在哪里/我如何保存笔记? 我很担心使用实例变量,因为我不知道后面怎么任何特定用户配置由查询实例化的魔力。 是__init__
使用安全,或是否需要通过检查备忘录属性的存在hasattr()
在每个读?
这是我目前执行的一个例子:
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)