除外を複数回呼び出すのではなく、クエリを実行して物のリストを除外する方法はありますか?Djangoオブジェクト複数除外()
13
A
答えて
28
をベースに、あなたは単にタグのリストを除外したいと思うように聞こえます。したがって、in
フィルタを使用することができます:
names_to_exclude = [o.name for o in objects_to_exclude]
Foo.objects.exclude(name__in=names_to_exclude)
あなたはそれが欲しいですか?
3
複数回除外を呼び出すと何が問題になりますか?クエリは怠惰で、データを取得するまで何も起こらないので、.exclude()を複数回使用することには欠点はありません。
4
あなたはQ objectでかなり簡単にそれを行うことができます。
from django.db.models import Q
excludes = None
for tag in ignored_tags:
q = Q(tag=tag)
excludes = (excludes and (excludes | q)) or q # makes sure excludes is set properly
set_minus_excluded = Foo.objects.exclude(excludes)
ます。また、)(除外と動的にそれを行うことができる必要があります:ネッドへの返信に
qs = Foo.objects.all()
for tag in ignored_tags:
qs = qs.exclude(tag=tag)
0
私は大規模なデータセットは、IEに高価になる可能性がありますが、forループの代わりに、クエリセットから直接、必要な値を取得する方が良いと思いダニエルローズマンの答えを改善する
names_to_exclude = objects_to_exclude.values_list('name')
Foo.objects.exclude(name__in=names_to_exclude)
-1
あなたが試すことができますこれもまた。
exclude_list = ['A', 'B', 'C'] qs = Foo.objects.exclude(items__in=exclude_list)
関連する問題
- 1. django - テンプレートフィルタで複数除外
- 2. Djangoで重複を除外するクエリ
- 3. (Django)Ajax - 複数のオブジェクト
- 4. djangoの複数のフィールドをdatadumpから除外する
- 5. djangoで複数のオブジェクトを削除する
- 6. 削除されたオブジェクトをDjangoインラインフォームセットから除外する
- 7. 複数の句と除外
- 8. 複数のフィルタタギング/除外
- 9. 複数のオブジェクトの複数の外部キー関連オブジェクトを照会する方法Django 1.8
- 10. djangoの複数のフィールドの外部キー
- 11. 複数のオブジェクトからのDjango ForeignKey
- 12. call_commandを使用したdjango dumpdataでの複数のアプリケーションの除外
- 13. Django除外の問題
- 14. 複数のグループを除外するTestNG
- 15. sparql複数の型階層を除外
- 16. 複数のページテンプレートを除外する
- 17. Powershell複数のOUを除外する
- 18. URL書き換え複数除外
- 19. 除外された複数のcountifs
- 20. Djangoクエリーセットから重複しない値を除外する
- 21. Linq複数のオブジェクトを削除
- 22. Djangoの複合外部キー
- 23. Get()関数で複数のオブジェクトを編集するDjango
- 24. Django - 複数のフィールドがある場合は重複するオブジェクトを削除します
- 25. Djangoクエリ内の注釈項目の数を除外します
- 26. Djangoのユニットテスト:TypeError例外: 'NoneType' オブジェクトが
- 27. Django queryset正規表現を除外
- 28. django:マイグレーションからモデルを除外する
- 29. Djangoフィールドセットで除外を使用する
- 30. 逆の外部キーでDjangoカスケード削除
私はオブジェクトのリストを直接削除します。私はo.nameを使用しません。 ignore_tags = request.user.ignore_tags.all() case_list = Case.objects.exclude(tags__in = ignore_tags)) – Johnd