如何将django表单中的数据作为列表输入?

How to input data in django forms as a list?

我需要将此数据作为 python list 转发给 django,而不是作为字符串。如何创建列表,只输入以逗号分隔的数据?

class CreateForm(forms.Form):
    list = forms.CharField(label='Input names (separate with commas): ')

您可以定义自己的字段,使其成为逗号分隔的字段。这看起来像:

# <i>app_name</i>/fields.py

class CommaSeparatedField(forms.CharField):

    def <strong>to_python</strong>(self, value):
        if value in self.empty_values:
            return self.empty_value
        value = str(value).split(',')
        if self.strip:
            value = [s.strip() for s in value]
        return value

    def <strong>prepare_value</strong>(self, value):
        if value is None:
            return None
        return ', '.join([str(s) for s in value])

然后以以下形式使用它:

# <em>app_name</em>/forms.py

from <em>app_name</em>.fields import CommaSeparatedField

class CreateForm(forms.Form):
    list = <strong>CommaSeparatedField(</strong>label='Input names (separate with commas): '<strong>)</strong>

如果表单有效,Django 将 return form.cleaned_data 中的字符串列表。