Может кто-нибудь может, например, показать мне, как заполнить CommaSeparatedIntegerField в Django?
-Спасибо.
Ответ 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].