get_or_create:是 'get' 还是 'create'?
get_or_create: is it a 'get' or a 'create'?
AFAIK,peewee 的 Model.get_or_create()
没有 return 指示创建的标志,这与 django 的 get_or_create()
不同。有没有好的方法来检查 return 由 get_or_create()
编辑的实例是否是新创建的?
谢谢
根据源码,没办法查。另外,根据文档,不建议使用此方法。
我建议使用 try/except/else 子句。
文档中有一个部分希望对您有所帮助:http://docs.peewee-orm.com/en/latest/peewee/querying.html#get-or-create
如果缺少文档,请告诉我,我很乐意改进它们。
http://docs.peewee-orm.com/en/latest/peewee/api.html#Model.get_or_create
classmethod get_or_create(**kwargs)
尝试获取与给定过滤器匹配的行。如果没有找到匹配的行,则创建一个新行。
参数:
- kwargs – field-name 到值的映射。
- defaults – 创建新行时使用的默认值。
Returns:
- 模型实例的元组和指示是否创建了新对象的布尔值。
它还警告您使用此方法可能会出现竞争条件,甚至还为您提供了一个不使用该方法的示例:
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))
AFAIK,peewee 的 Model.get_or_create()
没有 return 指示创建的标志,这与 django 的 get_or_create()
不同。有没有好的方法来检查 return 由 get_or_create()
编辑的实例是否是新创建的?
谢谢
根据源码,没办法查。另外,根据文档,不建议使用此方法。
我建议使用 try/except/else 子句。
文档中有一个部分希望对您有所帮助:http://docs.peewee-orm.com/en/latest/peewee/querying.html#get-or-create
如果缺少文档,请告诉我,我很乐意改进它们。
http://docs.peewee-orm.com/en/latest/peewee/api.html#Model.get_or_create
classmethod get_or_create(**kwargs)
尝试获取与给定过滤器匹配的行。如果没有找到匹配的行,则创建一个新行。
参数:
- kwargs – field-name 到值的映射。
- defaults – 创建新行时使用的默认值。
Returns:
- 模型实例的元组和指示是否创建了新对象的布尔值。
它还警告您使用此方法可能会出现竞争条件,甚至还为您提供了一个不使用该方法的示例:
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))