私は自分のウェブサイトでDjangoフォームを使用しており、フィールドの順序を制御したいと考えています。ここでDjangoフォーム、継承、フォームフィールドの順序
は、私は私のフォームを定義方法は次のとおりです。
class edit_form(forms.Form):
summary = forms.CharField()
description = forms.CharField(widget=forms.TextArea)
class create_form(edit_form):
name = forms.CharField()
名前は不変で、エンティティが作成されたときにのみ表示される必要があります。私は一貫性とDRY原則を追加するために継承を使用します。実際には完全に予想される、間違っていないことは、nameフィールドがview/htmlの最後にリストされていますが、名前フィールドを要約と説明の上にしたいと思います。私は簡単に概要と説明をcreate_formにコピーして継承を緩めることで簡単に修正できることを認識していますが、これが可能かどうかを知りたいと思います。
なぜですか? edit_formに100個のフィールドがあり、create_formの先頭に10個のフィールドを追加しなければならないと想像してください。 (これはではなく、私の例です)
この動作をどのように無効にすることができますか?
編集:
はどうやら厄介なハック(選択図】図属性をいじる)を経由せずにこれを行うには、適切な方法はありません。 .field属性はSortedDict(Djangoの内部データ構造の1つ)であり、key:valueのペアを並べ替えることはできません。どのようにしてアイテムを特定のインデックスに挿入するかは、クラスメンバからコンストラクタにアイテムを移動する方法を提供します。このメソッドはうまくいくが、コードを読みにくくする。私が適切と思う唯一の他の方法は、ほとんどの状況で最適ではないフレームワーク自体を変更することです。
要するにコードは次のようになる::)
これは長年のことですが、私はあなたがすでにこれを知っていると確信していますが、Pythonのクラス名は常に "CamelCased"にする必要があります。メソッド名は "named_with_underscore"だけです。 –
「キャメルケース」を意味しましたか? :) – jball037
TitleCaseは正しい言葉ですが、私は信じています。 –