Подтвердить что ты не робот

Как использовать CommaSeparatedIntegerField в django?

Здесь почти нет документации: http://docs.djangoproject.com/en/dev/ref/models/fields/#commaseparatedintegerfield

Может кто-нибудь может, например, показать мне, как заполнить CommaSeparatedIntegerField в Django?

-Спасибо.

4b9b3361

Ответ 1

Глядя на источник для django...

class CommaSeparatedIntegerField(CharField):
    def formfield(self, **kwargs):
        defaults = {
            'form_class': forms.RegexField,
            'regex': '^[\d,]+$',
            'max_length': self.max_length,
            'error_messages': {
                'invalid': _(u'Enter only digits separated by commas.'),
            }
        }
        defaults.update(kwargs)
        return super(CommaSeparatedIntegerField, self).formfield(**defaults)

Проверьте этот валидатор регулярных выражений. Похоже, если вы дадите ему список целых чисел и запятых, django не будет жаловаться.

Вы можете определить его так же, как charfield:

class Foo(models.Model):
    int_list = models.CommaSeparatedIntegerField(max_length=200)

И заполнить его следующим образом:

f = Foo(int_list="1,2,3,4,5")

Ответ 2

Я только что столкнулся с CommaSeparatedIntegerField в своем последнем проекте. Я использовал MySQL и, казалось, поставлял строку целых чисел, разделенных запятыми, очень дружественный к DB, например. '1,2,3,4,5'. Если вы хотите оставить его пустым, просто передайте пустую строку.

Он действует, как CharField, и подбрасывается мне странным способом.. Я получил значения типа "[1, 2, 3, 4, 5]", включая скобки в моей базе данных! Так что следите!

Ответ 3

Я хотел бы добавить, что это поле лишено Django 1.9. В Django 1.9+ следует использовать CharField с validators=[validate_comma_separated_integer_list].