Django を介してデータベースに電話番号 (米国) を保存したいと考えています。私は持っている
from django.db import models
class Number(models.Model):
phone_number = models.CharField("Phone Number", max_length=10, unique=True)
私が走ったとき:
python manage.py sql myapp
私は得た
BEGIN;
CREATE TABLE `demo_number` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`phone_number` varchar(10) NOT NULL UNIQUE
)
;
検証したところ、エラーはありませんでした。
python manage.py validate
0 errors found
だから私はやった
python manage.py syncdb
MySQL コンソールには、次のように表示されます。
mysql> select * from myapp_number;
Empty set (0.00 sec)
mysql> describe myapp_number;
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| phone_number | varchar(10) | NO | UNI | NULL | |
+--------------+-------------+------+-----+---------+----------------+
2 行セット (0.03 秒) `
次にpython manage.py shell
、私はします
from demo.models import Message, Number, Relationship, SmsLog
n=Number(phone_number='1234567890')
n.save()
MySQL コンソールで再度確認すると、次のように表示されます。
mysql> select * from myapp_number;
+------------+--------------+
| id | phone_number |
+------------+--------------+
| 2147483647 | 1234567890 |
+------------+--------------+
1 row in set (0.01 sec)
なぜid
数字が大きいのですか?実際、そのため、電話番号を挿入できなくなりました。たとえば、python manage.py shell
n=Number(phone_number='0987654321')
n.save()
IntegrityError: (1062, "Duplicate entry '2147483647' for key 'PRIMARY'")
私は Django を初めて使用します (Django 1.5 および MySQL Server バージョン: 5.1.63 を使用)。誰かが私が犯している明らかな間違いを指摘できれば、とても感謝しています. max_length
余談ですが、 のを 15に拡張したい場合、それCharField
を達成するための最も簡単でクリーンな (つまり、既存のセットアップを台無しにしない) 方法は何ですか? ありがとうございました。