0

select field私はかなりの数のことを試しましたが、Djangoにどのようにデータを入力できるかまだわかりません。次の例では、属性を持つ選択フィールドを持つ辞書を追加しname='tags'ます。

data = {}
for tag in tags:
  data['tags'] = tag.name
form = Form(initial=data)

予想どおり、ループはキーの「タグ」を上書きしているため、最後の値のみが優先されます(実際、フォームには最後の値が表示されます)。私はおそらくリストを渡すことがうまくいくと思っていました:

data = {}
l = []
for tag in tags:
  l.append(tag.name)
data['tags'] = l
form = Form(initial=data)

しかし、この場合、それは機能しません。

ご想像のとおり、私は次のようなフォームを使用しています。

class NewTopicForm(forms.Form):
  ... some fields
  tags = ChoiceField(
            widget=forms.Select(), 
            choices=SOME_CHOICES
         )

複数の値を追加する必要がある場合に、フォームに選択フィールドを入力する正しい方法は何ですか?

ありがとう!

アップデート:

私はこの投稿に従って次のことを試みました:

data = {'tags': tags.values_list('name',flat=True) }

Unfortunately, it doesn't work. Am I missing something?.

4

1 に答える 1

2

It seems that you want MultipleChoiceField if you want the initial values to be a list.

于 2012-05-23T05:15:08.547 に答える