モデル インスタンスの作成および保存 (DB への挿入) 中に、Django のドキュメントと矛盾する非常に奇妙な動作が発生しています。考えられる理由で、私はすでにアイデアを使い果たしました 。これらの場合に、Django がすべてのフィールドを保存できない理由についての提案に非常に感謝しています。
私が使用しているこのクラス:
class Person(models.Model):
user = models.ForeignKey(User)
phone_number = models.CharField(max_length=20, blank=True)
address = models.CharField(max_length=200, blank=True)
そして、いくつかのケースで動作しないコードがあります:
# First Case
new_person = Person()
new_person.user = request.user
new_person.phone_number = '111111'
new_person.save(force_insert=True)
# Second One
new_person = Person(user=request.user, phone_number='111111')
new_person.save(force_insert=True)
# Third One
new_person = Person.objects.create(user=request.user, phone_number='111111')
いずれにせよ、公式のDjangoドキュメントに基づいて、djangoはオブジェクトを作成してDBに挿入する必要があります。
実際、オブジェクトは正常に作成されます (および関連するすべてのフィールドが設定されます) が、DB に挿入された行にはフィールドのみが正しく入力され、設定さid
れたフィールドは空白のままです。user_id
phone_number
ただし、既存の (以前に保存された) オブジェクトのすべてのフィールドにアクセスして更新することは問題ありません。
blank=True
クラス宣言から削除してPerson
も(適切なテーブル変更を行って)、何も変わりません。
編集: 問題はより洗練されていることが判明しました。以下の私自身の回答の完全な説明と解決策