在Django中,我试图创建一个包含球员球衣号码字段的模型,我想知道是否有一种方法可以限制该字段仅为数字输入。目前我在www.example.com中有models.py
number = models.CharField(max_length=2)
是否有一个与CharField不同的字段允许我将输入限制为仅数字?
nkoocmlb1#
Django最酷的地方之一是它为你提供了不同类型的模型,请阅读here。对于您的情况,请尝试以下操作
number = models.IntegerField()
您可以在此处阅读更多关于IntegerField的信息
IntegerField
uqxowvwt2#
球员的球衣号码应该只需要正数。正大整数字段允许值从0到9223372036854775807:
number = models.PositiveBigIntegerField()
正整数字段允许值从0到2147483647:
number = models.PositiveIntegerField()
正小整数字段允许值从0到32767:
number = models.PositiveSmallIntegerField()
此外,在Django中没有**“负整数字段”、“负大整数字段”和“负小整数字段”**。
2w2cym1i3#
在Django中有许多字段而不是CharField,无论是模型还是表单使用的modelfield:如果是整数,请用途:编号=型号。IntegerField()甚至
number = models.FloatField(),如果你想表示一个特定商品的价格。它在计费软件中很有用。
还有一些类似***BigInteger***的字段,以防您需要更多编号有关详细参考资料,请查阅:https://docs.djangoproject.com/en/1.11/ref/models/fields/
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])
而且,验证器也可以和模型字段一起使用,就像上面的例子一样。
4条答案
按热度按时间nkoocmlb1#
Django最酷的地方之一是它为你提供了不同类型的模型,请阅读here。
对于您的情况,请尝试以下操作
您可以在此处阅读更多关于
IntegerField
的信息uqxowvwt2#
球员的球衣号码应该只需要正数。
正大整数字段允许值从0到9223372036854775807:
正整数字段允许值从0到2147483647:
正小整数字段允许值从0到32767:
此外,在Django中没有**“负整数字段”、“负大整数字段”和“负小整数字段”**。
2w2cym1i3#
在Django中有许多字段而不是CharField,无论是模型还是表单使用的modelfield:
如果是整数,请用途:编号=型号。IntegerField()
甚至
number = models.FloatField(),如果你想表示一个特定商品的价格。它在计费软件中很有用。
还有一些类似***BigInteger***的字段,以防您需要更多编号
有关详细参考资料,请查阅:https://docs.djangoproject.com/en/1.11/ref/models/fields/
blmhpbnm4#
如果使用序列化程序,则可以对这些情况使用验证器。例如,对于10位字符字段,可以使用如下验证器:
然后,您可以将此验证器与序列化程序的CharField一起使用:
而且,验证器也可以和模型字段一起使用,就像上面的例子一样。