0

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 をもう一度試してみましょうBooleanFieldCharField

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-BCharFieldV-Anull=False

Q2 :特定の状況でモデルに適用するときにBooleanField、どのフィールドが次のような出力を与え、どのフィールドが次のような出力を与えるかをどのように知ることになっていますか?CharFieldpython manage.py schemamigration myapp --auto

私はSQliteRDBMSとして使用していDjango 1.4ます。

4

1 に答える 1