次のモデルフィールドがあります。
id_student = models.PositiveIntegerField(primary_key=True, max_length=10)
max_length
制限は機能しません。管理者にログインして、10文字以上のIDを持つ学生を作成できます。どうすれば解決できますか?
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}$')])