如何在django中使用CommaSeparatedIntegerField?

时间:2009-07-30 19:11:21

标签: python django django-models

这里几乎没有文档: http://docs.djangoproject.com/en/dev/ref/models/fields/#commaseparatedintegerfield

也许有人可以通过示例向我展示如何在Django中填充CommaSeparatedIntegerField

-Thanks。

3 个答案:

答案 0 :(得分:22)

查看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")

答案 1 :(得分:11)

我想补充一下这个字段is depricated in Django 1.9。在Django 1.9+中,应使用CharField validators=[validate_comma_separated_integer_list]

答案 2 :(得分:6)

我刚刚在我的最新项目中处理过CommaSeparatedIntegerField。我正在使用MySQL,似乎提供一串逗号分隔的整数值是非常DB友好的,例如'1,2,3,4,5'。如果你想把它留空,只需传递一个空字符串。

它确实像CharField一样,并且以一种奇怪的方式为我编造..我最终得到了像“[1,2,3,4,5]”这样的值,包括我数据库中的括号!所以小心!