Menapis Pilihan ForeignKey dalam Django ModelForms
Apabila bekerja dengan model Django yang mempunyai hubungan ForeignKey, anda mungkin menghadapi senario di mana anda perlu menyekat pilihan yang tersedia untuk bidang tertentu berdasarkan kriteria tertentu. Dalam kes khusus ini, kami mempunyai senario di mana kami ingin mengehadkan pilihan Kadar untuk model Pelanggan kepada hanya yang dikaitkan dengan Syarikat induknya.
Untuk mencapai penapisan ini dalam Django 1.0, anda boleh menggunakan atribut set pertanyaan daripada ModelChoiceField yang sepadan. Dalam kes anda, medan yang berkaitan ialah "kadar." Dengan menyediakan QuerySet tersuai pada medan ini, anda boleh menggunakan kriteria penapisan yang diperlukan:
form.fields["rate"].queryset = Rate.objects.filter(company_id=the_company.id)
Pengubahsuaian ini akan memastikan bahawa apabila membuat atau mengedit Klien, pilihan Kadar akan dihadkan kepada hanya yang dikaitkan dengan Syarikat milik Klien. Dengan mengendalikan penapisan ini secara eksplisit dalam paparan, anda mengelakkan sebarang kemungkinan komplikasi yang mungkin timbul daripada menggunakan atribut limit_choices_to dalam antara muka Pentadbir.
Pendekatan ini membolehkan anda mengekalkan cara yang bersih dan cekap untuk menapis pilihan ForeignKey dalam anda Django ModelForms, memberikan lebih fleksibiliti dalam tugasan manipulasi data aplikasi anda.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Pilihan ForeignKey dalam Django ModelForms berdasarkan Data Model Berkaitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!