Menggabungkan berbilang Set Pertanyaan boleh menjadi penting apabila berurusan dengan fungsi carian yang kompleks dalam Django. Semasa menggunakan paparan object_list generik menawarkan penomboran, ia memerlukan QuerySet yang digabungkan.
Penyelesaian Itertools
Daripada mengulang dan menambahkan elemen secara manual, memanfaatkan itertools.chain menyediakan pendekatan yang lebih cekap dan mementingkan ingatan:
from itertools import chain result_list = list(chain(page_list, article_list, post_list))
rantai bercantum QuerySets menjadi penjana, mengelakkan hits pangkalan data yang tidak diperlukan dan overhed memori.
Isih Set Query Bercantum
Untuk penghalusan lanjut, senarai yang digabungkan boleh diisih menggunakan fungsi yang diisih dan attrgetter untuk pengekstrakan medan yang mudah:
from operator import attrgetter result_list = sorted( chain(page_list, article_list, post_list), key=attrgetter('date_created') )
Untuk membalikkan jenis pesanan:
result_list = sorted( chain(page_list, article_list, post_list), key=attrgetter('date_created'), reverse=True, )
Kesimpulan
Menggunakan itertools.chain dan diisih membolehkan penggabungan dan pengisihan Set Query yang cekap. Pendekatan ini menangani isu kehilangan atribut klon dan memberi kuasa kepada pembangun untuk memaparkan hasil carian gabungan dengan penomboran menggunakan paparan senarai_objek generik.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan dan Menyusun Berbilang Set Pertanyaan Django dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!