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

时间:2017-05-11 12:57:59

标签: python peewee

我有一个模型,其中包含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的缓存中存在某种错误。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我有类似的问题。在我的模型中,我有一个1-many关联,所以我创建了一个像这样的列表:allTemperatures = []。 但是,如果我创建一个新模型(t = TemperaturesModel()),则新对象的数组将填充最后的值。

更改为:allTemperatures = None解决了该问题。