检查 Python 中 Google 数据存储模型的 ListProperty 中是否已存在值
Check if value is already exists in ListProperty of Google Datastore Model in Python
我刚刚开始学习 python,而且我也是 Google 数据存储模型的新手。如果这个问题看起来太菜鸟了,请见谅。
我想做的很简单。
我正在验证用户是否已在 post 上被点赞。
所以我需要检查 Google 数据存储模型的 ListProperty 中是否有一个键。我的代码的 PFB。
@classmethod
def likePost(cls,user_key):
if user_key not in cls.liked_user:
cls.liked_user.append(user_key)
return True
else:
return False
cls 是来自 Google 数据存储区的模型类型的 "Post" 对象。
'liked_user'是"Post"对象的属性类型ListProperty。
但显然,ListProperty 不可迭代。以下是来自控制台的错误。
TypeError: argument of type 'ListProperty' is not iterable.
所以,请帮我弄清楚如何实现它。
我尝试了几个小时的谷歌搜索,仍然无法弄清楚如何实现这个。
提前致谢。
这些属性不适用于模型 class,它们适用于该模型的各个实例。一个实例代表数据存储中的一个实体,正是这个实例在其 "liked_user" 字段中有一个列表。询问一个值是否在 class 属性.
中是没有意义的
不太清楚你想在这里做什么。如果你只是想知道一个用户是否已经喜欢另一个用户,那么它根本不应该是一个 class 方法;只是一个普通的实例方法,它接受实例。
# no decorator
def likePost(self, user_key):
if user_key not in self.liked_user:
self.liked_user.append(user_key)
return True
else:
return False
但是,如果您试图找出 任何 实例是否在其 liked_user 中具有该键,那么您需要查询数据库:
@classmethod
def likePost(cls,user_key):
users = cls.query(cls.liked_user == user_key).get()
if users:
...
我刚刚开始学习 python,而且我也是 Google 数据存储模型的新手。如果这个问题看起来太菜鸟了,请见谅。
我想做的很简单。
我正在验证用户是否已在 post 上被点赞。 所以我需要检查 Google 数据存储模型的 ListProperty 中是否有一个键。我的代码的 PFB。
@classmethod
def likePost(cls,user_key):
if user_key not in cls.liked_user:
cls.liked_user.append(user_key)
return True
else:
return False
cls 是来自 Google 数据存储区的模型类型的 "Post" 对象。 'liked_user'是"Post"对象的属性类型ListProperty。
但显然,ListProperty 不可迭代。以下是来自控制台的错误。
TypeError: argument of type 'ListProperty' is not iterable.
所以,请帮我弄清楚如何实现它。
我尝试了几个小时的谷歌搜索,仍然无法弄清楚如何实现这个。
提前致谢。
这些属性不适用于模型 class,它们适用于该模型的各个实例。一个实例代表数据存储中的一个实体,正是这个实例在其 "liked_user" 字段中有一个列表。询问一个值是否在 class 属性.
中是没有意义的不太清楚你想在这里做什么。如果你只是想知道一个用户是否已经喜欢另一个用户,那么它根本不应该是一个 class 方法;只是一个普通的实例方法,它接受实例。
# no decorator
def likePost(self, user_key):
if user_key not in self.liked_user:
self.liked_user.append(user_key)
return True
else:
return False
但是,如果您试图找出 任何 实例是否在其 liked_user 中具有该键,那么您需要查询数据库:
@classmethod
def likePost(cls,user_key):
users = cls.query(cls.liked_user == user_key).get()
if users:
...