从Django模型列表中删除重复项

2024-09-28 19:28:22 发布

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

我有一个Django模型对象的列表,这些对象是从一个查询集中得到的,但是这个列表中有重复的对象,有人能告诉我如何删除这些对象吗

我试过了,但没用

print(somemodels) #union of some quersets as list
>>> [<SomeModel: 1>, <SomeModel: 1>, <SomeModel: 2>]
cleaned_up_list = []

for somemodel in somemodels:
    print (type(some model))
    >>>> <class 'SomeModel.models.SomeModel'>
    if somemodel not in somemodels:
        print ("SomeModel is not already in :" cleaned_up_list)
        cleaned_up_list.append(somemodel)

print ("Very Final Results :", cleaned_up_list)

清理后的列表仍然是空的?所以它不是这样工作的,因为你可以在some models中有相同的两个模型,pk和{}相同。我想删除这些重复的,有人能帮我从django模型列表中删除重复的django模型吗?在


Tags: 对象djangoin模型列表modelsnotsome
2条回答

我看到你对union-some-querysets的评论是list,所以我假设它们是相同的模型对象。您可以通过执行以下操作来合并查询集:

queryset = queryset1 | queryset2 | queryset3

结果不是一个列表,而是一个查询集。然后您可以简单地执行以下操作:

^{pr2}$

替换此代码:

if somemodel not in somemodels:
    print ("SomeModel is not already in :" cleaned_up_list)
    cleaned_up_list.append(somemodel)

签署人:

^{pr2}$

因为在第一段代码中,测试将始终为true,因为您正在测试元素是否存在于迭代的列表中。在

相关问题 更多 >