繁体   English   中英

get_or_create:是“获取”还是“创建”?

[英]get_or_create: is it a 'get' or a 'create'?

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

谢谢

根据源代码,无法找到答案。 另外,根据文档,不建议使用此方法。

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

希望文档中有一部分对您有所帮助: http : //docs.peewee-orm.com/zh-CN/latest/peewee/querying.html#get-or-create

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

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

classmethod get_or_create(** kwargs)

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

参数:

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

返回值:

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

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

try:
    person = Person.get(
        (Person.first_name == 'John') &
        (Person.last_name == 'Lennon'))
except Person.DoesNotExist:
    person = Person.create(
        first_name='John',
        last_name='Lennon',
        birthday=datetime.date(1940, 10, 9))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM