6
Google App Engine에는 Django의 get_or_create()과 동일한 기능이 있습니까?Google App Engine : get_or_create()?
Google App Engine에는 Django의 get_or_create()과 동일한 기능이 있습니까?Google App Engine : get_or_create()?
완전한 등가물은 없지만 get_or_insert과 비슷합니다. 주요 차이점은 get_or_insert
이 에 설정된 필터를 검색 할 때 key_name
을 허용한다는 것입니다.
이 테스트를하지 않은,하지만 그것은 다음과 같이해야합니다 :
class BaseModel(db.Model):
@classmethod
def get_or_create(cls, parent=None, **kwargs):
def txn():
query = cls.all()
if parent:
query.ancestor(parent)
for kw in kwargs:
query.filter("%s =" % kw, kwargs[kw])
entity = query.get()
if entity:
created = False
else:
entity = cls(parent, **kwargs)
entity.put()
created = True
return (entity, created)
return db.run_in_transaction(txn)
class Person(BaseModel):
first_name = db.StringProperty()
last_name = db.StringProperty()
p, created = Person.get_or_create(first_name='Tom', last_name='Smith')