Django ModelForm でForeignKey の選択肢をフィルタリングする方法は?

DDD
リリース: 2024-11-17 02:44:03
オリジナル
782 人が閲覧しました

How to Filter ForeignKey Choices in a Django ModelForm?

Django ModelForm での ForeignKey の選択の調整

Context

Django モデルでは、ForeignKey は 2 つのモデル間の関係を定義します。このドキュメントでは、Django ModelForm のForeignKey フィールドで使用可能な選択肢をフィルタリングして、関連するオプションのみが表示されるようにする方法を示します。

ForeignKey Choices のフィルタリング

指定されたシナリオでは、次のことを目的としています。特定の会社に関連するクライアントを追加するためのフォーム。クライアントのbase_rateForeignKeyには、問題の会社に関連付けられたレートのみが表示される必要があります。 Django 1.0 でこれを実現するには、次の手順に従います。

  1. ビュー関数で、フォーム テンプレートをレンダリングする前に、目的のForeignKey フィールドの queryset 属性をフィルター処理された QuerySet に設定します。
form.fields["base_rate"].queryset = Rate.objects.filter(company_id=the_company.id)
ログイン後にコピー

このクエリセットにより、選択した会社に関連するレートのみが選択肢として利用可能になります。 form.

Django 0.96 Hack

Django 0.96 用に投稿されたソリューションは、確かに Django フォームのネイティブ機能をバイパスするハックです。これは、ForeignKey フィールドの Choices 属性を直接変更するため、不整合が生じる可能性があり、運用コードには推奨されません。

ModelChoiceField Queryset

Django のドキュメントには、ModelChoiceField の選択肢が次によって定義されると明確に記載されています。そのクエリセット属性。この属性を適切な QuerySet に明示的に設定することで、オブジェクトの目的のサブセットに合わせて外部キーの選択を調整できます。この方法により、ハッキングが回避され、クリーンで保守可能なアプローチが保証されます。

以上がDjango ModelForm でForeignKey の選択肢をフィルタリングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート