Как вводить данные в формы django в виде списка?

Мне нужно передать эти данные в виде python list в django, а не в виде строки. Как создать список, просто для ввода данных, разделенных запятыми?

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

Вы можете определить свое собственное поле, чтобы сделать его полем, разделенным запятыми. Тогда это будет выглядеть так:

# app_name/fields.py

class CommaSeparatedField(forms.CharField):

    def to_python(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 prepare_value(self, value):
        if value is None:
            return None
        return ', '.join([str(s) for s in value])

и затем используйте его в форме с:

# app_name/forms.py

from app_name.fields import CommaSeparatedField

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

Django вернет список строк в form.cleaned_data в случае, если форма действительна.

Вернуться на верх