get_or_create:它是'get'还是'create'?

时间:2015-01-20 09:11:10

标签: python peewee

AFAIK,peewee Model.get_or_create()并没有返回表示创作的标志,与django的get_or_create()不同。有没有一种方法可以检查get_or_create()返回的实例是否是新创建的?

由于

3 个答案:

答案 0 :(得分:2)

根据源代码,没办法找出来。此外,根据文档,不建议使用此方法。

我建议使用try / except / else子句。

答案 1 :(得分:1)

文档中有一节应该会有所帮助:http://docs.peewee-orm.com/en/latest/peewee/querying.html#get-or-create

如果缺少文档,请告诉我,我会很乐意改进它们。

答案 2 :(得分:0)

http://docs.peewee-orm.com/en/latest/peewee/api.html#Model.get_or_create

  

classmethod get_or_create(** kwargs)

尝试获取与给定过滤器匹配的行。如果找不到匹配的行,请创建一个新行。

参数:

  • kwargs –字段名称到值的映射。
  • defaults –创建新行时使用的默认值。

返回:

  • Model实例和布尔值的元组,指示是否创建了新对象。

它还警告您使用此方法可以达到竞争条件,甚至可以为您提供一个示例,而无需使用该方法:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>
<canvas id="tempChart"></canvas>