Bagaimana untuk Menapis Pilihan ForeignKey dalam Django ModelForm?

DDD
Lepaskan: 2024-11-17 02:44:03
asal
781 orang telah melayarinya

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan