লুপের জন্য:
values = [1, 2, 3]
q = Q(pk__in=[])
for val in values:
q |= Q(pk=val)
Article.objects.filter(q)
হ্রাস করুন:
from functools import reduce
from operator import or_
values = [1, 2, 3]
q_objects = [Q(pk=val) for val in values]
q = reduce(or_, q_objects, Q(pk__in=[]))
Article.objects.filter(q)
এ দুটিই সমান Article.objects.filter(pk__in=values)
values
খালি থাকার সময় আপনি কী চান তা বিবেচনা করা গুরুত্বপূর্ণ important Q()
প্রারম্ভিক মান হিসাবে অনেক উত্তর সবকিছু ফিরিয়ে দেবে । Q(pk__in=[])
একটি ভাল শুরু মান। এটি সর্বদা ব্যর্থ হওয়া কিউ অবজেক্ট যা অপটিমাইজার (এমনকি জটিল সমীকরণের জন্য) খুব সুন্দরভাবে পরিচালনা করে।
Article.objects.filter(Q(pk__in=[]))
Article.objects.filter(Q(pk=None))
Article.objects.none()
Article.objects.filter(Q())
আপনি যদি খালি হয়ে সমস্ত কিছু ফিরিয়ে দিতে চান তবে সেই আচরণটি নিশ্চিত করার জন্য values
আপনার উচিত এবং উচিত ~Q(pk__in=[])
:
values = []
q = Q()
for val in values:
q |= Q(pk=val)
Article.objects.filter(q)
Article.objects.filter(q | author="Tolkien")
q &= ~Q(pk__in=[])
Article.objects.filter(q)
Article.objects.filter(q | author="Tolkien")
এটি মনে রাখা জরুরী যে Q()
এটি কিছুই নয় , সর্বদা-উত্তরকারী কিউ অবজেক্ট নয়। এর সাথে জড়িত যে কোনও ক্রিয়াকলাপ এটিকে পুরোপুরি ফেলে দেবে।