我有一个模型,其中包含data
类型jsonb
的字段:
class Post(Model):
...
data: Dict[str,Any] = BinaryJSONField(default={},
constraints=[Check("jsonb_typeof(data) = 'object'")])
然后,在两个不同的测试用例中,我创建了帖子,不知怎的,在第二次测试中我发现在创建后立即在post.data
中看到第一次测试的数据。
post = Post()
print(post.data)
# This prints {} in first test but a non-empty dict in second test
我应该在哪里寻找问题?
不是让我感到惊讶(这是对此最明智的半解释),但我发现新创建的实例的id(post.data)
与前一个测试中的数字相同。所以Peewee字面上给我一个旧物体而不是新物体。我现在怀疑Peewee的缓存中存在某种错误。
答案 0 :(得分:3)
使用可变对象(" {}")作为关键字参数通常是一种不好的做法。我建议将默认设置更改为无。
答案 1 :(得分:0)
我有类似的问题。在我的模型中,我有一个1-many关联,所以我创建了一个像这样的列表:allTemperatures = []
。
但是,如果我创建一个新模型(t = TemperaturesModel()
),则新对象的数组将填充最后的值。
更改为:allTemperatures = None
解决了该问题。