1

インポートされたcsvがあり、特定の列のすべてのエントリが同じオブジェクトに対応していることを確認する必要があるユースケースがあります。

たとえば、次のように言います。

l = ['test1', 'test2']

次のようなものが必要です:

Model.objects.filter(Q(id='test1') and Q(id='test2')

l に含まれる要素の数がわからないので、これを可能にするクエリを作成するにはどうすればよいですか。

私はもう試した:

h = Q()
for i in l:
   h &= Q(id=i)

しかし、それはうまくいきません

どんな助けでも大歓迎です

アップデート:

これも効かない

Models.objects.filter(reduce(operator.and_, l))

operator.and_ は & 演算子だと思います。それが機能しない理由です。これでもできるのか!!

4

2 に答える 2

0

AND は のデフォルト演算ですfilter()

Models.objects.filter(*l)
于 2014-12-20T01:32:58.660 に答える
-1

たぶんそれ?

if l: # 'l' is a bad variable name
  query = Models.objects  # this returns all objects!
  for item in l:
    query = query.filter(id=item) # each filter adds a 'and'
  return query.exits()
else:
  return False  # If no values, does it return False?

あなたは本当にidフィールドで尋ねますか?モデルインスタンスごとに一意ではありませんか?

于 2013-10-25T03:12:08.327 に答える