私は同じ問題を抱えており、テーブル作成プロセス自体にドリルダウンしました (テストを行う際にも問題が発生するため)。
このようなモデルの場合:
class MyModel(models.Model):
owner = models.ForeignKey(User, null=True, blank=True)
生成されたSQL(を使用./manage.py sql
)は次のとおりです。
CREATE TABLE `app_mymodel` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`owner_id` integer
)
ALTER TABLE `app_mymodel` ADD CONSTRAINT `owner_id_refs_id_34553282` FOREIGN KEY (`owner_id`) REFERENCES `auth_user` (`id`);
したがって、テーブル自体は Null 値を許可しているように見えますが、DB レベルでの FK 制約は実際には値を実際の参照に制限しているため、NULL 値はありません...
Djangoのバグですか?
編集:前のコマンドで作成されたテーブルは、FK 列で NULL 値をDEFAULT NULL
受け入れ、実際にSHOW CREATE TABLE app_mymodel;
. 奇妙ですが、今はエラーを再現できません。