私はdjangoモデルを持っています:
#models.py
class m1(models.Model):
some_word = models.CharField()
'manage.py syncdb'コマンドでdbを作成し、モデルにForeignKeyフィールドを追加しました
#models.py
from django.contrib.auth.models import User
class m1(models.Model):
some_word = models.CharField()
user = models.ForeignKey(User)
私の知る限り、ネイティブdjangoはdbの変更を提供しないため、列'user_id'を手動で作成する必要があります。わかりました。phpmyadminに移動してこの列を作成します。この時点で、すべてが正常であり、アプリは機能します。しかし、ユーザーフィールドにオプション「blank=True」が必要であることを理解しました。
#models.py
from django.contrib.auth.models import User
class m1(models.Model):
some_word = models.CharField()
user = models.ForeignKey(User, blank = True)
また、m1オブジェクトを保存しているときに、「Noneを割り当てることができません:「m1.user」はnull値を許可しません」というエラーが発生しました。テーブルを削除してsyncdbで作成すれば、すべてがうまくいくことを知っています。Southのような移行ツールを使用すれば、それも問題ありません。しかし、私はこれの仕組みを理解し、dbの何が問題になっているのかを知りたいと思います。
'manage.py sqlall app'を呼び出すと、'CREATE TABLE'に通知され、インデックスが作成されます。
CREATE INDEX `app_m1_a703c35a` ON `app_m1` (`user_id`);
ALTER TABLE `app_m1` ADD CONSTRAINT `user_id_refs_id_5b1b34cc`
FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`);
わかりました。phpmyadminにアクセスしてこのSQLを実行します(率直に言って、これらのインデックスが何をするのかわかりません)。ただし、エラーは引き続き発生します。私は何をすべきか?