緯度と経度の2つのフィールドを持つモデルを取得しました。現在は2つのCharFieldsですが、管理者に設定するカスタムウィジェットを作成したいのですが、Googleマップを表示してから、マーカーの座標を取得することを考えていました。
しかし、2つの異なるフィールドを設定するために1つのウィジェット(単一のマップ)を持つことはできますか?
緯度と経度の2つのフィールドを持つモデルを取得しました。現在は2つのCharFieldsですが、管理者に設定するカスタムウィジェットを作成したいのですが、Googleマップを表示してから、マーカーの座標を取得することを考えていました。
しかし、2つの異なるフィールドを設定するために1つのウィジェット(単一のマップ)を持つことはできますか?
フォームにlatフィールドとlongフィールドを定義します。HiddenInputWidgetを使用するように設定します。
フォームの初期化後、2つの値をとるカスタムウィジェットを含む別のフィールドを追加します。
その追加されたフィールドのcleanメソッドで、self.cleaned_data['lat']およびself.cleaned_data['lng']の値を設定します
おそらくもっとクリーンな方法がありますが、うまくいくはずです
full_clean
データ分割にオーバーライドメソッドを使用しました。メソッドの使用clean_FIELD
は遅すぎます。
私は最終的に、マップを制御するウィジェットを備えた追加の不要なフィールドを使用して管理者にカスタムフォームを設定し、stevejalimのようなマップウィジェットを設定しました。ただし、入力フィールドはまだビューに残っていて、表示してもかまわないため、非表示にしませんでした。代わりにそのモデルを編集してマップを配置するためにテンプレートをオーバーライドする方がおそらくクリーンですが、それは単純なはずの何かのために多くの作業をするように見えました。
1つの解決策は、1つのモデルフィールドが複数のdb列に対応するが、まだサポートされていない複雑なモデルフィールドをDjangoが許可する場合です(https://code.djangoproject.com/ticket/5929を参照) 。
もう1つは、Djangoで2つのモデルフィールドに対応するフォームフィールドを使用できるようにする場合ですが、それを実現する方法がないようで、チケットが見つかりません。