我正在构建一个应用程序,您可以在其中搜索数据库中的对象(假设您搜索的对象是人)。我想做的是将相关对象分组,例如已婚夫妇。换句话说,如果两个人的姓氏相同,我们就假设他们已经结婚了(这不是一个很好的例子,但你可以理解)。姓氏是两个人结婚的唯一标志。 在搜索结果中,我想显示相邻的已婚夫妇,以及所有其他人。你知道吗
假设你搜索“约翰”,这就是我想要的:
John Smith - Jane Smith
John Adams - Nancy Adams
John Washington
John Andersson
John Ryan
然后,每个名字都是指向此人个人资料页面的链接。你知道吗
我现在使用的是一个函数,它查找所有对,并返回一个元组列表,其中每个元组都是一对。问题是,在搜索结果中,一对中的每个名字都列了两次。 我为搜索查询做了一个查询(Person.objects.filter文件(name\uu contains=“John”)),查询结果被发送到match函数。然后将原始queryset和匹配函数结果发送到模板。 我想我可以排除match函数找到匹配的每个人,但我不知道,但这是最有效的解决方案吗?你知道吗
编辑:
正如我在评论中所写的,我想要匹配的实际字符串是不相同的。引用我自己的话:
In fact, the strings I want to match are not identical, instead they look more like this: "foo2(bar13)" - "foo2(bar14)". That is, if two strings have the same foo id (2), and if the bar id is an odd number (13), then its match is the bar id + 1 (14). I have a regular expression to find these matches
首先按姓氏对对象进行排序:
然后使用groupby:
更新是的,此解决方案也适用于您的新需求。您只需要一种稳定的方法来为每个项目生成密钥,并用它替换keyfun的主体:
您对如何为每个项生成密钥的描述不够清楚,尽管您应该能够通过上面的示例自己解决这个问题。你知道吗
相关问题 更多 >
编程相关推荐