Моделирование 6-значного цифрового почтового индекса в django
Я хотел бы определить 6-значный цифровой почтовый индекс в Django models.py
.
Сначала я попробовал следующее;
postal_code = models.PositiveIntegerField(blank=False)
Однако почтовые индексы могут содержать ведущие нули, например 000157
. PositiveIntegerField не подходит для этого.
Если я использую CharField
, поле может принимать алфавиты, которые не действительны для почтовых индексов.
Как определить 6-значный цифровой почтовый индекс в django models.py?
Я использую Django v4.
Вы можете использовать валидатор, например, работая с RegexValidator
[Django-doc]:
from django.core.validators import RegexValidator
from django.db import models
from django.utils.text import gettext_lazy as _
class MyModel(models.Model):
postal_code = models.CharField(
max_length=6,
validators=[RegexValidator('^[0-9]{6}$', _('Invalid postal code'))],
)
Вы можете определить его как CharField, а затем проверить его перед сохранением, как например https://docs.djangoproject.com/en/4.0/ref/validators/