からモデルを変更しました
standard = models.ManyToManyField(Standard)
に
standard = models.ManyToManyField(Standard, blank=True, null=True)
このアプリの南スキーマ移行は変更を認識しませんか?
答えられていないこの質問に似ています: 南の移行と多対多のフィールドへの変更
その動作は正しいです。null
を使用した場合、ManyToManyField
はデータベースレベルでは何の意味もありません。 ManyToManyField
を宣言すると、関係を保持する中間テーブルが作成されますが、Djangoは、モデルインスタンスにstandard
属性を作成します。便宜上、nullになる可能性のある実際の列はありません。定義上、関係のインスタンスは常にゼロになる可能性があります。
ただし、blank=False
は検証に影響を及ぼし(たとえば、管理アプリなどのモデルフォームを使用する場合)、ユーザーは少なくとも1つのリレーションを選択する必要があります。
(Djangoの組み込みの移行システムは、データベースに影響するかどうかに関係なく、モデルへのほぼすべての変更に対して移行を作成することに注意してください。したがって、この変更は移行につながる可能性がありますが、データベースに影響を与えることはありません。関係のインスタンスをゼロにすることはできません。)