Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menapis Pilihan ForeignKey dalam Django ModelForm?

Bagaimana untuk Menapis Pilihan ForeignKey dalam Django ModelForm?

DDD
DDDasal
2024-11-17 02:44:03911semak imbas

How to Filter ForeignKey Choices in a Django ModelForm?

Menyesuaikan Pilihan ForeignKey dalam Borang Model Django

Konteks

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.

Menapis Pilihan ForeignKey

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:

  1. Dalam fungsi paparan, sebelum memberikan templat borang, tetapkan atribut set pertanyaan medan ForeignKey yang dikehendaki kepada Set Pertanyaan yang ditapis:
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.

Django 0.96 Hack

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.

ModelChoiceField Queryset

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn