Моделирование 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/

Вернуться на верх