Django:如何在文本输入框中显示值列表?
我定义了一个模型,其中有一个多对多的字段,我希望这个字段能把值用空格连接起来,比如:
<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
你有一个基本的误解,就是字段本身并不负责它们是怎么显示的。这是由小部件来处理的。