1

これが基本的な質問である場合は申し訳ありませんが、私はこれを解決できないようです!:/

私のアプリケーションは、フォルダ内のファイルのリストを作成します。次に、データベースにクエリを実行し、ファイル名のクエリセットを作成します。

リストをマージしてから、重複を削除したいと思います。最終的なリストはテンプレートにリストされ、これはフォルダー内にあるがデータベースに追加されていないファイルで構成されます。

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)

ありがとうございます

4

3 に答える 3

6

使用する

usedimage=Images.objects.values_list('imageurl', flat=True).distinct()

それ以外の

usedimage=Images.objects.values('imageurl').distinct()

ドキュメントを参照してください。

values()ハッシュできない型の辞書を返します。これにより、エラーが発生します。

于 2013-02-26T11:53:52.137 に答える
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()
于 2013-02-26T11:58:47.687 に答える
0

キャサリンが言ったように、 django quesy 自体でフィルタリングできます。

代わりに重複を削除するには、sets を試してください。例を次に示します。

import sets
t = sets.Set(['a', 'b', 'c', 'd'])
t1 = sets.Set(['a', 'b', 'c'])

print t | t1
print t - t1
于 2013-02-26T11:59:09.397 に答える