很抱歉,如果这是一个基本问题,但我似乎无法解决这个问题! :/
我的应用程序填充文件夹中的文件列表。然后它查询数据库并创建文件名的查询集。
我希望合并列表,然后删除重复项。最终列表将在模板上列出,并且包含文件夹中但尚未添加到数据库中的文件,
Views.py:
def Image_Add(request):
path="..."
images =os.listdir(path)
usedimage=Images.objects.values('imageurl').distinct()
result=[]
for image in images:
result.append(image)
for image2 in usedimage:
result.append(image2)
imagelis=set(result)
imagelist=list(imagelis)
return TemplateResponse(request, 'Image_Add.html', {'form':imagelist})
但是在模板上显示的所有文件都没有删除重复项。
(我目前在“imagelis=set(result)
”)
谢谢你
答案 0 :(得分:6)
使用
usedimage=Images.objects.values_list('imageurl', flat=True).distinct()
而不是
usedimage=Images.objects.values('imageurl').distinct()
请参阅docs。
values()
返回不同类型的dicts。这会导致错误。
答案 1 :(得分:2)
usedimage=Images.objects.values_list('imageurl', flat=True).distinct()
for image in usedimage:
Images.objects.filter(pk__in=Images.objects.filter(imageurl=imageurl
).values_list('id', flat=True)[1:]).delete()
答案 2 :(得分:0)
正如凯瑟琳所说,你可以在django查询中过滤。
除了删除重复项之外,您还可以尝试设置 这是一个例子。
import sets
t = sets.Set(['a', 'b', 'c', 'd'])
t1 = sets.Set(['a', 'b', 'c'])
print t | t1
print t - t1