0

私の django 管理フォームは、特定のオブジェクトのデータの正しい初期値を表示しません。ロード時に初期値を明示的に設定するようにフォームを変更しようとしましたが、それも効果がありません。私のコードは次のようになります。

DISCOUNT_OVERRIDE_CHOICES = (
        (None, ""),
        (Decimal('10'), _('10%')),
        (Decimal('20'), _('20%')),
        (Decimal('30'), _('30%')),
        (Decimal('40'), _('40%')),
        (Decimal('50'), _('50%')),
    )
    self.fields['discount'].choices = \
            DISCOUNT_OVERRIDE_CHOICES

    if self.instance.discount:
        self.initial['discount'] = \
                self.instance.discount

上記のコードは、適切な Admin モデルで form = MyForm を使用して後で呼び出すフォームの一部です。管理ページが正しく読み込まれ、適切なデータがすべて表示されますが、「割引」フィールドの初期値は常に空の文字列の [なし] オプションであり、オブジェクトに保存されている割引率を正確に表すことはありません。そのデータがフォームに入力されます。このフィールドは、それが発生する唯一のフィールドであり、利用可能な選択肢を上書きしなくても問題は解決しません (その場合、ページの読み込み時に常に 10% の選択肢が選択されます)。

何かご意見は?前もって感謝します。

4

1 に答える 1

0

コードのこの部分が間違っています

self.initial['discount'] = \
                self.instance.discount

やったほうがいい

self.fields['discount'].initial = \
                self.instance.discount
于 2012-06-20T19:30:33.003 に答える