3

特定のフィールドが 3 つのオプションを持つラジオ セレクターであるフォームがあります。これがGood、More-or-Less、Badを表しているとしましょう。

次のように、InlineRadio と同じ行にそれらを配置することができました。

self.helper.layout = Layout(InlineRadio(field_name))

今、私は2つのことをする必要があります:

1) ラジオボタンとして表示される各オプションとそのラベルを事前定義された画像に置き換えます。

2) 2 つの画像を追加します。1 つはラジオ ボタンの左側に、もう 1 つは右側に配置します。ということで、最後に連続で5枚の画像になります。左から右へ: Image of Smile (just the image)- Image of selector (Good)- Image of selector (More-or-Less)- Image of selector (Bad)- Image of Sad face (just the image)

django-crispy でそれらを達成することは可能ですか? そうでない場合、どうすればこれを達成できますか?

前もって感謝します。

4

1 に答える 1

6

私はクリスピーフォームの主任開発者です。Fieldこれは、レイアウト オブジェクトとカスタム テンプレートを使用して行うことができます。

Field('field_name', template="custom_inline_radio.html")

あなたが持っている他のオプションは、独自のレイアウトオブジェクトのサブクラスを作成することですInlineRadio。そうすれば、次のことを行うだけで済みます。

CustomInlineRadio('field_name')

実際、あなたがやろうとしているのは、基本的に Django のデフォルト ウィジェットの出力をオーバーライドすることです。Django フォームでカスタム ウィジェットを使用すると、クリスピー フォームがうまく機能します。ウィジェットと Django フォームに関する記事を書いたので、興味があるかもしれません。

于 2013-01-03T16:55:25.987 に答える