Apabila membina fungsi carian yang rumit dalam Django, adalah perkara biasa untuk menggabungkan berbilang Set Pertanyaan. Untuk memudahkan penomboran hasil carian, paparan object_list generik boleh digunakan, tetapi ia memerlukan QuerySets untuk digabungkan menjadi satu contoh.
Satu pendekatan, seperti yang ditunjukkan dalam coretan kod asal, melibatkan pengulangan secara manual melalui setiap QuerySet dan menambahkan keputusannya pada senarai. Walau bagaimanapun, kaedah ini tidak mempunyai atribut klon yang diperlukan, yang membawa kepada ralat.
Penyelesaian yang lebih cekap dan elegan adalah dengan menggunakan fungsi itertools.chain Python:
from itertools import chain result_list = list(chain(page_list, article_list, post_list))
Kaedah ini lebih pantas dan lebih cekap ingatan daripada menggabungkan senarai secara manual. Selain itu, ia membenarkan manipulasi data selanjutnya, seperti mengisih hasil:
from operator import attrgetter result_list = sorted( chain(page_list, article_list, post_list), key=attrgetter('date_created') )
Kod ini mengisih QuerySet yang digabungkan mengikut atribut 'date_created', membolehkan penyesuaian tertib paparan hasil carian. Dengan memanfaatkan fungsi terbina dalam Python, pembangun Django boleh menggabungkan berbilang Set Pertanyaan dengan lancar, mendayakan fungsi carian lanjutan dan penomboran.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Set Pertanyaan Django dengan Cekap untuk Penomboran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!