我在查询集上使用defer
。然后有时我需要直接获取延迟字段。
在Django 1.6.5中一切都很好。
但后来我升级到了Django 1.10.5。
现在,当我尝试Document.objects.defer('cached_analysis').first().cached_analysis
之类的内容时,我得到了KeyError
。事实证明它只发生在自定义字段jsonfield.JSONField
上。 '本机' django领域工作得很好。
错误是:
File "/home/serf/dogbone/venv/local/lib/python2.7/site-packages/jsonfield/subclassing.py", line 36, in __get__
return obj.__dict__[self.field.name]
KeyError: 'cached_analysis'
所以,我觉得jsonfield模块中没有考虑这个补丁`https://github.com/django/django/pull/6118的变化(我使用最新的2.0.1版本)。我可能错了。
我尝试使用一些魔法,比如使用覆盖的__get__
方法创建CustomJSONField(jsonfield.JSONField)(试图解决问题),但在重现期间甚至没有调用此方法,所以我失败了。