我的应用程序有一个组模型,它有一个members属性,该属性包含一个成员键列表。我想找到包含确切成员列表的组。我想找到一个有效的方法。我下面的方法可以工作,但是很慢,特别是由于函数中的循环。有更好的方法吗?我应该用不同的方式来建模吗?你知道吗
这是我的团队模型。你知道吗
class Group(ndb.Model):
members = ndb.KeyProperty(kind='User', repeated=True)
下面是查找包含一组成员的组的函数。你知道吗
def get_group_with_members(members):
groups_for_one_member = Group.query(Group.members == members[0].key)
# Get list of member keys.
member_keys = [member.key for member in members]
# Loop through groups of one member to see if any groups contain all the members.
for group in groups_for_one_member:
if set(group.members) == set(member_keys):
return group
return None
您可以连接一个已排序的成员ID列表,并将其存储为组的属性。以查询时相同的方式构造筛选器值将允许您仅返回完全匹配的组。如果成员列表的长度或用户ID的长度意味着这些串联的值对于StringProperty来说太长,那么可以对这些值进行哈希运算。你知道吗
相关问题 更多 >
编程相关推荐