12
我有這個型號區域:Django的MAX_LENGTH爲IntegerField
id_student = models.PositiveIntegerField(primary_key=True, max_length=10)
的max_length
限制不起作用。我可以登錄管理員並創建一個ID超過10個字符的學生。我該如何解決這個問題?
我有這個型號區域:Django的MAX_LENGTH爲IntegerField
id_student = models.PositiveIntegerField(primary_key=True, max_length=10)
的max_length
限制不起作用。我可以登錄管理員並創建一個ID超過10個字符的學生。我該如何解決這個問題?
Django忽略整數字段的max_length
,並會在Django 1.8+中警告您。有關更多詳細信息,請參閱ticket 23801。
您可以使用一個最大值驗證,
from django.core.validators import MaxValueValidator
class MyModel(models.Model):
...
id_student = models.PositiveIntegerField(primary_key=True, validators=[MaxValueValidator(9999999999)])
或使用CharField
存儲ID,並使用正則表達式驗證,以確保ID完全由數字。這將具有允許以零開頭的ID的優點。
class MyModel(models.Model):
...
id_student = models.CharField(primary_key=True, max_length=10, validators=[RegexValidator(r'^\d{1,10}$')])