0
フォームオーバーロードでMultipleChoiceFieldのデフォルト値をロードしようとしています。Django MultipleChoiceFieldはフォームオーバーロードの初期データを更新しません
私はなMultipleChoiceField内部の初期変数を与えるのであれば、それは動作します:
class UserPreferences(forms.Form):
my_form = forms.MultipleChoiceField(
widget = forms.CheckboxSelectMultiple(),
choices = MY_CHOICES,
initial = MY_INITIAL_DICT)
しかし、私は、ユーザーに関連するデータベースからの初期値を取得し、次のように初期更新しようとした場合、my_form初期変数は、」doesnの
class UserPreferences(forms.Form):
my_form = forms.MultipleChoiceField(
widget = forms.CheckboxSelectMultiple(),
choices = MY_CHOICES)
def __init__(self, user):
initial = make_my_dict_from(MyModel.objects.filter(user=user))
super(UserPreferences, self).__init__(initial, empty_permitted)
私はこれを単純なChoiceFieldで行いますが、MultipleChoiceFieldでは動作しません。
ありがとうございました!あなたはこのようなキーワード引数を使用する必要が
super(UserPreferences, self).__init__(initial=initial)
:
申し訳ありませんが、__init__で本当の例を再現しませんでした。私はもっと多くのパラメータを持っています。確かに、initial = initualなどの残りのパラメータは、より良い、よりクリーンなプラクティスですが、それは私の問題ではありませんでした。 DjangoはMultipleChoiceFieldsと特別な動作をします。とにかく、あなたの答えをありがとう! – ScotchAndSoda
私はMultipleChoiceFieldsを使用しましたが、AFAIKでは特別な動作はありません。 – guettli