মানগুলির তালিকার সাথে আমি কীভাবে জাজানো কোয়েরি ফিল্টার করতে পারি?


290

আমি নিশ্চিত এটি একটি তুচ্ছ অপারেশন, তবে কীভাবে এটি হয়েছে তা আমি বুঝতে পারি না।

এর চেয়ে স্মার্ট কিছু থাকতে হবে:

ids = [1, 3, 6, 7, 9]

for id in ids:
    MyModel.objects.filter(pk=id)

আমি এই সমস্ত কিছুর সাথে এমন কিছু দিয়ে একটি ক্যোয়ারিতে পেতে চাইছি:

MyModel.objects.filter(pk=[1, 3, 6, 7, 9])

মানগুলির তালিকার সাথে আমি কীভাবে জাজানো কোয়েরি ফিল্টার করতে পারি?



উত্তর:


537

থেকে জ্যাঙ্গো ডকুমেন্টেশন :

Blog.objects.filter(pk__in=[1, 4, 7])

যদি আমরা খালি তালিকা পাস করি বা কোনও রেকর্ড না ফেরায় তা ত্রুটি বাড়িয়ে দেবে?
রক্মো

@ ওমকারদেশপাণ্ডে নং
ডিলান ইয়ং

@ ডায়ালান ইয়ং তাই এটি কোনও রেকর্ড ফিরিয়ে দেবে না
রাকমো

2
নিবন্ধন করুন যদিও, আপনি যদি কল করেন তবে অবশ্যই আপনি get()একটি অবজেক্টডোস নটএক্সিস্ট ত্রুটি পাবেন।
ডিলানইং

48

যখন আপনার আইটেমের তালিকা থাকে এবং আপনি তালিকা থেকে সম্ভাব্য মানগুলি পরীক্ষা করতে চান তবে আপনি ব্যবহার করতে পারবেন না =

SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]বর্গ কোয়েরিটি এমন হবে যা সত্য নয়। আপনাকে এর জন্য inঅপারেটরটি ব্যবহার করতে হবে যাতে আপনার জিজ্ঞাসাটি SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)জাজানো সরবরাহকারী __inঅপারেটরের মতো হবে ।


20
একটি ছোট ব্যাখ্যার জন্য +1। যদিও আমি জানি আমি ডক্সটি পড়তে পারি, এর অর্থ এই নয় যে আমি ডক্সটি বুঝতে পেরেছি।
অস্টিন এ

6

থেকে জ্যাঙ্গো ডকুমেন্টেশন :

Blog.objects.in_bulk([1])
{1: <Blog: Beatles Blog>}

Blog.objects.in_bulk([1, 2])
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>}

Blog.objects.in_bulk([])
{}

Blog.objects.in_bulk()
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>, 3: <Blog: Django Weblog>}

Blog.objects.in_bulk(['beatles_blog'], field_name='slug')
{'beatles_blog': <Blog: Beatles Blog>}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.