Python Peewee中的模型在创建后不为空

Python Peewee中的模型在创建后不为空,python,peewee,Python,Peewee,我有一个模型,它有一个名为data的字段,类型为jsonb: 班级职位(模型): ... 数据:Dict[str,Any]=BinaryJSONField(默认值={}, 约束=[检查(“jsonb_类型(数据)=‘对象’”)) 然后,在两个不同的测试用例中,我创建了post,在第二个测试中,我在创建后立即在post.data中看到了第一个测试的数据 post=post() 打印(发布数据) #这将在第一个测试中打印{},但在第二个测试中打印非空的dict 我应该在哪里查找问题 我并不感到

我有一个模型,它有一个名为
data
的字段,类型为
jsonb

班级职位(模型):
...
数据:Dict[str,Any]=BinaryJSONField(默认值={},
约束=[检查(“jsonb_类型(数据)=‘对象’”))
然后,在两个不同的测试用例中,我创建了post,在第二个测试中,我在创建后立即在
post.data
中看到了第一个测试的数据

post=post()
打印(发布数据)
#这将在第一个测试中打印{},但在第二个测试中打印非空的dict
我应该在哪里查找问题



我并不感到惊讶(这是最合理的半解释),但我刚刚发现新创建实例的
id(post.data)
与上一次测试中的数字相同。所以Peewee会直接返回一个旧对象的字段,而不是新对象的字段。我现在怀疑Peewee的缓存中存在某种缺陷。

使用可变对象(“{}”)作为关键字参数通常是不好的做法。我建议将默认设置更改为无。

我也遇到了类似的问题。在我的模型中,我有一个1-many关联,因此我创建了如下列表:
allTemperatures=[]
。 但是如果我创建一个新模型(
t=TemperatureModel()
),新对象的数组将填充最后的值


更改为:
allTemperatures=None
可解决此问题。

是!这正是问题所在!我用lambda:{}替换了它,我想它也解决了这个问题,对吧?