Django:如何在文本输入框中显示值列表?

0 投票
2 回答
1298 浏览
提问于 2025-04-16 11:20

我定义了一个模型,其中有一个多对多的字段,我希望这个字段能把值用空格连接起来,比如:

<input type="text" name="foo" value="val1 val2 val3"/>

我已经定义了一个表单,使用CharField来表示多个值:

class MyForm(ModelForm):
    foo = CharField(label='Foo')
    class Meta:
        model = MyModel

但是它并没有把值用空格分开,而是显示成这样:

[u'val1', u'val2', u'val3']

我该怎么改变这种行为呢?

2 个回答

0

好的,我终于搞明白了:

class MultiValueTextWidget(TextInput):
    def _get_value(self, value):
        return " ".join(value)

    def _format_value(self, value):
        if self.is_localized:
            return formats.localize_input(self._get_value(value))
        return self._get_value(value)

我之前也试过这个(在我发原问题之前),但我觉得我的字段声明有点问题。现在这样用小部件来实例化字段就可以了:

markets = CharField(widget=MultiValueTextWidget(), label='Ticker symbols')

不知道为什么,我在这方面遇到了一些麻烦:

class Meta:
    widgets = {
        'markets': MultiValueTextWidget()
        }
0

你有一个基本的误解,就是字段本身并不负责它们是怎么显示的。这是由小部件来处理的。

撰写回答