2つのスクープブックのアドバイス(6.2.4項)に従って、Charfieldを空白= Trueに設定したモデルをセットアップしました。Charfield nullエラー
しかしclass Supplier(models.Model):
unique_id = models.IntegerField(unique=True)
name = models.CharField(max_length=255, unique=True)
supplier_name = models.CharField(max_length=255, blank=True)
私はエラーを取得するsupplier_nameフィールドにNoneを持っていないモデルのエントリを保存しよう: django.db.utils.IntegrityError:コラム「supplier_name」にNULL値は非NULL制約に違反します。 これに対処する最良の方法は何ですか?フィールド宣言でnull = Trueを使用するか、Noneを空の文字列に変換するか(理想的ではない)あるいは別のアプローチですか?
どのように 'Supplier'インスタンスを作成していますか? 'supplier_name'を指定しないと、 'Supplier.objects.create(unique_id = 1、name = 'example')'とすると、 'supplier_name'が空の文字列として保存されると思います。しかし、明示的に 'supplier_name = None'を設定した場合、 'Supplier.objects.create(unique_id = 2、name = 'example2'、supplier_name = None)'の場合、Djangoはnullを保存しようとし、 'IntegrityError'を取得します。 'blank = True'オプションは、Djangoの管理とモデルのフォームに影響を与えます。基本的なデータベーススキーマには影響しません。また、自動的に' None'を '' ''に変換します。 – Alasdair
それが問題です。私はdjangoが自動的にNoneを ''に変換し、 'supplier_name = None'で保存しようとしていると思った。 – Yunti
喜んでそれを答えました。私は答えとしてコメントを追加しました。 – Alasdair