前提
python:3.9
Django: 3.2.10
MySQL
質問内容
今回、独自のカラム(staff_id)を作成したいと考え、BigAutoField(primary_key=True)を使用した。
auto_incrementにしたい、BigAutoFieldにしたが文字数制限の設定ができない。
・実現したいこと:00000000~99999999の8桁の数字の範囲で登録できるようにしたい。
下記のようなモデルを作成したが、WARNINGSとDjangoに怒られ、当然DBを確認してもmax_lengthは無視されていた。
models.py
1class Staff(models.Model): 2 staff_id = models.BigAutoField(primary_key=True,max_length=8)
error
1WARNINGS: 2admin.Staff.Staff_id: (fields.W122) 'max_length' is ignored when used with BigAutoField. 3 HINT: Remove 'max_length' from field
migrations
1migrations.CreateModel( 2 name='Staff', 3 fields=[ 4 ('staff_id', models.BigAutoField(max_length=8, primary_key=True, serialize=False)), 5 ], 6 ), 7
MySQL
1mysql> desc admin_staff; 2+--------------------------+--------------+------+-----+---------+----------------+ 3| Field | Type | Null | Key | Default | Extra | 4+--------------------------+--------------+------+-----+---------+----------------+ 5| staff_id | bigint | NO | PRI | NULL | auto_increment | 6
試したこと
class Staff(models.Model): staff_id = models.BigAutoField(primary_key=True,validators=[MaxValueValidator(8)])
MaxValueValidatorを使用して、バリデータをつけようかと思っているのですが、効果はないでしょうか?
色々検索してみたのですが、AutoFieldに文字数制限をかけられるような記事がなかったためご質問させていただきました。よろしくお願い致します。
上記にMaxValueValidatorを使用する方法を検討していたが、0~8の数字の範囲しか制限できない。
実現したいことは、99999999までの制限なのでお門違いなことをしていました。
回答1件
あなたの回答
tips
プレビュー