Django ignoruje max_length
dla pól całkowitych i wyświetli ostrzeżenie w Django 1.8+. Aby uzyskać więcej informacji, patrz ticket 23801.
Można użyć max wartość walidator,
from django.core.validators import MaxValueValidator
class MyModel(models.Model):
...
id_student = models.PositiveIntegerField(primary_key=True, validators=[MaxValueValidator(9999999999)])
lub użyć CharField
do przechowywania identyfikatora i używać walidatora regex aby upewnić się, że identyfikator jest w całości wykonany z cyfr. Miałoby to tę zaletę, że pozwalałoby na identyfikację zaczynającą się od zera.
class MyModel(models.Model):
...
id_student = models.CharField(primary_key=True, max_length=10, validators=[RegexValidator(r'^\d{1,10}$')])