Django型号字段

vxf3dgd4  于 2023-02-10  发布在  Go
关注(0)|答案(4)|浏览(113)

在Django中,我试图创建一个包含球员球衣号码字段的模型,我想知道是否有一种方法可以限制该字段仅为数字输入。目前我在www.example.com中有models.py

number = models.CharField(max_length=2)

是否有一个与CharField不同的字段允许我将输入限制为仅数字?

nkoocmlb

nkoocmlb1#

Django最酷的地方之一是它为你提供了不同类型的模型,请阅读here
对于您的情况,请尝试以下操作

number = models.IntegerField()

您可以在此处阅读更多关于IntegerField的信息

uqxowvwt

uqxowvwt2#

球员的球衣号码应该只需要正数
正大整数字段允许值从0到9223372036854775807

number = models.PositiveBigIntegerField()

正整数字段允许值从0到2147483647

number = models.PositiveIntegerField()

正小整数字段允许值从0到32767

number = models.PositiveSmallIntegerField()

此外,在Django中没有**“负整数字段”“负大整数字段”“负小整数字段”**。

2w2cym1i

2w2cym1i3#

在Django中有许多字段而不是CharField,无论是模型还是表单使用的modelfield:
如果是整数,请用途:编号=型号。IntegerField()
甚至

number = models.FloatField(),如果你想表示一个特定商品的价格。它在计费软件中很有用。

还有一些类似***BigInteger***的字段,以防您需要更多编号
有关详细参考资料,请查阅:https://docs.djangoproject.com/en/1.11/ref/models/fields/

blmhpbnm

blmhpbnm4#

如果使用序列化程序,则可以对这些情况使用验证器。例如,对于10位字符字段,可以使用如下验证器:

def postalcode_validator(value):
    rule = re.compile(r'^\d{10}$')
    if not rule.search(value):
        raise serializers.ValidationError("Postal code format must be XXXXXXXXXX")
    return value

然后,您可以将此验证器与序列化程序的CharField一起使用:

# serializers.py
...
postal_code = serializers.CharField(validators=[postalcode_validator])

而且,验证器也可以和模型字段一起使用,就像上面的例子一样。

相关问题