Dalam model Django, ForeignKey mentakrifkan hubungan antara dua model. Dokumentasi ini menunjukkan cara menapis pilihan yang tersedia untuk medan ForeignKey dalam Django ModelForm, memastikan bahawa hanya pilihan yang berkaitan dibentangkan.
Dalam senario yang diberikan, anda berhasrat untuk mencipta borang untuk menambah Pelanggan yang berkaitan dengan Syarikat tertentu. ForeignKey base_rate Pelanggan hendaklah hanya memaparkan Kadar yang dikaitkan dengan Syarikat yang dipersoalkan. Untuk mencapai ini dengan Django 1.0, ikuti langkah berikut:
form.fields["base_rate"].queryset = Rate.objects.filter(company_id=the_company.id)
Set pertanyaan ini memastikan bahawa hanya Kadar yang berkaitan dengan Syarikat yang dipilih akan tersedia sebagai pilihan dalam borang.
Penyelesaian yang disiarkan untuk Django 0.96 sememangnya penggodaman yang memintas fungsi asli borang Django. Ia mengubah suai atribut pilihan medan ForeignKey secara langsung, yang boleh membawa kepada ketidakkonsistenan dan tidak disyorkan untuk kod pengeluaran.
Dokumentasi Django dengan jelas menyatakan bahawa pilihan ModelChoiceField ditakrifkan oleh atribut set pertanyaannya. Dengan menetapkan atribut ini secara eksplisit kepada QuerySet yang sesuai, anda boleh menyesuaikan pilihan kunci asing kepada subset objek yang dikehendaki. Kaedah ini mengelakkan sebarang penggodaman dan memastikan pendekatan yang bersih dan boleh diselenggara.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Pilihan ForeignKey dalam Django ModelForm?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!