我正在使用带有webapp2和Python的Google App Engine。
我的User
模型带有deleted
字段:
class User(ndb.Model):
first_name = ndb.StringProperty()
last_name = ndb.StringProperty()
email = ndb.StringProperty()
deleted = ndb.BooleanProperty(default=False)
我想通过调用User.get_by_id()
来获取User对象,但我想排除deleted
字段True
的对象。是否可以使用正常的get_by_id()
函数执行此操作?
如果没有,我可以覆盖吗?
或者我应该创建一个自定义类方法,像get_by_id_2()
一样执行正常的.get()
查询,如下所示:User.query(User.key.id()==id, User.deleted==False).get()
?
你会推荐其他东西吗?
答案 0 :(得分:3)
查询明显慢于get,并且最终会保持一致性。您可能应该使用正常的get_by_id并在之后检查已删除。你当然可以用一种方法把它包起来:
@classmethod
def get_non_deleted(cls, id):
entity = cls.get_by_id(id)
if entity and not entity.deleted:
return entity