1

以前は、このようなdjangoモデルがありました

class Review(models.Model):
    reviewdate=models.DateField(default=date.today)
    description=models.TextField()
    author=models.ForeignKey(User,null=True)

私は db に Review のレコードを 500 ほど持っています。

モデルにフィールドを追加しました

from django.core.validators import MinValueValidator,MaxValueValidator

class Review(models.Model):
    reviewdate=models.DateField(default=date.today)
    description=models.TextField()
    author=models.ForeignKey(User,null=True)
    rating= models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(10)], default=5, help_text='integers 1 to 10')

python manage.py schemamigration myapp --auto正常に実行され、0002_auto__add_field_review_rating.pyファイルが作成されました

ここで、db の既存のレコードのデータ移行を行う必要があります。走らなければなりませんか

python manage.py datamigration myapp somechanges

somechanges.py次に、作成された?に関数を実装します。新しいフィールドdifficultyにデフォルト値の 5 を既に定義しているので、migrate コマンドを実行すると、それは使用されませんか? 関数で明示的に設定する必要がありsomechanges.pyますか?

4

1 に答える 1

2

この場合、データ移行を行う必要はありません。新しいフィールドのデフォルトを指定したので、スキーマの移行を適用するときにそれが使用されます。

次のコマンドを使用して移行を適用します。

./manage.py migrate myapp

新しいフィールドのデフォルト値の詳細については、高度な変更の南のチュートリアルを参照してください。

于 2012-11-28T08:38:25.247 に答える