Django 型号字段
Posted
技术标签:
【中文标题】Django 型号字段【英文标题】:Django Models Number Field 【发布时间】:2016-07-30 15:57:59 【问题描述】:在 Django 中,我正在尝试创建一个模型,该模型将包含一个球员的球衣号码字段,并且想知道是否有办法将该字段限制为仅限数字输入。目前我在models.py中
number = models.CharField(max_length=2)
是否有与 CharField 不同的字段允许我将输入限制为仅数字?
【问题讨论】:
当然。 IntegerField. 知道这将是一个简单的答案。谢谢 不客气,尽管我认为在发布 *** 问题之前检查官方文档会更好。大约有十几个内置字段,您可以轻松地自己浏览它们。PositiveSmallIntegerField
应该会更好,它采用从 0 到 32767 的整数值。
【参考方案1】:
关于 Django 的一个很酷的事情是它为您提供了不同类型的模型,请阅读 here。
对于你的情况,试试这样的
number = models.IntegerField()
您可以阅读有关IntegerField
here 的更多信息
【讨论】:
【参考方案2】:在模型或模型字段用于表单的情况下,Django 中有许多字段而不是 CharField:
如果您使用整数:number = models.IntegerField()
甚至
number = models.FloatField(),如果您想表示特定商品的价格。在计费软件中很有用。
还有一些类似 BigInteger 的字段,以防你想要更多的数字
详细参考查看:https://docs.djangoproject.com/en/1.11/ref/models/fields/
【讨论】:
【参考方案3】:如果您使用序列化程序,则可以在这些情况下使用验证程序。例如,对于一个 10 位的 CharField,你可以有一个这样的验证器:
def postalcode_validator(value):
rule = re.compile(r'^\d10$')
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])
此外,验证器也可以与模型字段一起使用,就像上面的示例一样。
【讨论】:
以上是关于Django 型号字段的主要内容,如果未能解决你的问题,请参考以下文章