Django中带破折号整数的模型字段

Django中带破折号整数的模型字段,django,django-models,Django,Django Models,我需要一个用于特殊标识符的字段,更具体地说,是CAS编号,因此该字段应该只传递整数和破折号。有没有比使用字符域更好的方法来保存这种破折号分隔的整数?Thanx.可能的解决方案之一是使用: 可能的解决方案之一是使用: 您可以创建自己的django字段,该字段将CAS编号从一种格式转换为另一种格式。CAS的长度最多只有10位,其中最后一位是校验和,所以您可以在保存到数据库时跳过它,并在检索时计算它 因此,即使是10位数字,它也将适合整数字段。这里要做的唯一工作是编写django字段,将格式从一种转换

我需要一个用于特殊标识符的字段,更具体地说,是CAS编号,因此该字段应该只传递整数和破折号。有没有比使用字符域更好的方法来保存这种破折号分隔的整数?Thanx.

可能的解决方案之一是使用:


可能的解决方案之一是使用:


您可以创建自己的django字段,该字段将CAS编号从一种格式转换为另一种格式。CAS的长度最多只有10位,其中最后一位是校验和,所以您可以在保存到数据库时跳过它,并在检索时计算它


因此,即使是10位数字,它也将适合整数字段。这里要做的唯一工作是编写django字段,将格式从一种转换为另一种。

您可以创建自己的django字段,将CAS号从一种格式转换为另一种格式。CAS的长度最多只有10位,其中最后一位是校验和,所以您可以在保存到数据库时跳过它,并在检索时计算它


因此,即使是10位数字,它也将适合整数字段。这里要做的唯一工作是编写django字段,将格式从一个转换为另一个。

您可以编写自己的格式:但是,底层类型在数据库级别仍然必须是charfield,因此您可能需要重新考虑charfield实现,以节省您可以编写自己的额外工作:但是,在数据库级别,底层类型仍然必须是charfield,因此您可能需要重新考虑charfield实现以节省额外的工作量,假设这是最简单的方法。不过,我认为这里有一个整型域比一个charfield更自然。Thanx,假设这是最简单的方法。不过,我认为这里有一个整型字段比charfield更自然。
cas = models.CharField(max_length=11, validators=[RegexValidator(r'^\d\d-\d\d-\d\d-\d\d$')])