Ответ 1
Django игнорирует max_length
для целых полей и будет предупреждать вас в Django 1.8+. Подробнее см. билет 23801.
Вы можете использовать валидатор максимального значения,
from django.core.validators import MaxValueValidator
class MyModel(models.Model):
...
id_student = models.PositiveIntegerField(primary_key=True, validators=[MaxValueValidator(9999999999)])
или используйте CharField
для хранения идентификатора и используйте средство проверки регулярных выражений, чтобы убедиться, что идентификатор целиком сделан из цифр. Это имело бы преимущество, позволяя идентификаторам, начинающимся с нуля.
class MyModel(models.Model):
...
id_student = models.CharField(primary_key=True, max_length=10, validators=[RegexValidator(r'^\d{1,10}$')])