【问题标题】:Pre-populating forms with a select field with several values in Django在 Django 中使用具有多个值的选择字段预填充表单
【发布时间】:2012-05-29 14:22:41
【问题描述】:

我已经尝试了很多东西,但我仍然不知道如何在 Django 中填充 select field。以下示例添加了一个带有 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
         )

当我需要添加多个值时,使用选择字段填充表单的正确方法是什么?

谢谢!

更新:

我按照这个post尝试了以下:

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

不幸的是,它不起作用。我错过了什么吗?

【问题讨论】:

    标签: django forms select populate


    【解决方案1】:

    如果您希望初始值是一个列表,您似乎想要MultipleChoiceField

    【讨论】:

    • 美丽。我不得不将其更改为 tags = forms.MultipleChoiceField(widget=forms.SelectMultiple(attrs={ // some attributes }),choices=TAGS_CHOICES),但效果很好。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2011-01-21
    • 2014-12-01
    • 2018-03-29
    • 1970-01-01
    相关资源
    最近更新 更多