1

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を達成するための最も簡単でクリーンな (つまり、既存のセットアップを台無しにしない) 方法は何ですか? ありがとうございました。

4

2 に答える 2