查找包含精确成员列表的组的有效方法

2024-04-23 22:53:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我的应用程序有一个组模型,它有一个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

Tags: 方法函数模型列表for属性group成员
1条回答
网友
1楼 · 发布于 2024-04-23 22:53:16

您可以连接一个已排序的成员ID列表,并将其存储为组的属性。以查询时相同的方式构造筛选器值将允许您仅返回完全匹配的组。如果成员列表的长度或用户ID的长度意味着这些串联的值对于StringProperty来说太长,那么可以对这些值进行哈希运算。你知道吗

相关问题 更多 >