I. 次のモデルがあるとします。
class Knight(models.Model):
name = models.CharField(max_length=100)
of_the_round_table = models.BooleanField()
Ⅱ.次に、このモデルを South の schemamigration に追加して移行します。
python manage.py schemamigration myapp --initial
python manage.py migrate myapp
III. Knight
テーブルにエントリを作成します。
>>> jason = Knight.objects.get(name=”Jason”)
ここには特別なことはなく、いつものルーティーンです。ただし、次の点に注意してください。
IV-A。新しいモデル フィールドを追加します ( CharField
):
class Knight(models.Model):
name = models.CharField(max_length=100)
of_the_round_table = models.BooleanField()
surname = models.CharField(max_length=100) # +
VA。この新しいフィールドのスキーマ移行を記述します。
$ python manage.py schemamigration myapp --auto
? The field 'Knight.surname' does not have a default specified, yet is NOT NULL.
? Since you are adding this field, you MUST specify a default
? value to use for existing rows. Would you like to:
? 1. Quit now, and add a default to the field in models.py
? 2. Specify a one-off value to use for existing columns now
しかし
ステップ IV と V をもう一度試してみましょうBooleanField
。CharField
IV-B。新しいモデル フィールドを追加します ( BooleanField
):
class Knight(models.Model):
name = models.CharField(max_length=100)
of_the_round_table = models.BooleanField()
has_sword = models.BooleanField() # +
VB。この新しいフィールドのスキーマ移行を記述します。
$ python manage.py schemamigration myapp --auto
+ Added field has_sword on registration.Knight
Created 0005_auto__add_field_knight_has_sword.py. You can now apply this migration with: ./manage.py migrate registration
Q1 : Django docs によると、これらのフィールドの両方がデフォルトであるにもかかわらず、 ( )を追加した場合とBooleanField
( )を追加した場合とで異なる出力が得られるのはなぜですか?V-B
CharField
V-A
null=False
Q2 :特定の状況でモデルに適用するときにBooleanField
、どのフィールドが次のような出力を与え、どのフィールドが次のような出力を与えるかをどのように知ることになっていますか?CharField
python manage.py schemamigration myapp --auto
私はSQlite
RDBMSとして使用していDjango 1.4
ます。