私は Django ドキュメントで投票アプリを実行しています:初めての Django アプリの作成、パート 2。データベース API を使用しているときに、IntegrityError が見つかりました。
polls/models.py
class Question(models.Model):
question_text=models.CharField(max_length=200)
pub_date=models.DateTimeField('date published')
Question モデルのオブジェクトを作成してみました。
Question.objects.create(question_text="What's up?")
これによりエラーが発生します
IntegrityError: NOT NULL 制約に失敗しました: polls_question.pub_date
しかし、これを試してみると
Question.objects.create(pub_date=timezone.now())
オブジェクトが正常に作成されます。
最初のケースで IntegrityError が発生する理由と、2 番目のケースでエラーが発生しない理由は何ですか?
ジャンゴのドキュメントから
CharField や TextField などの文字列ベースのフィールドでは null を使用しないでください。文字列ベースのフィールドに null=True がある場合、それは「データなし」の 2 つの可能な値があることを意味します。NULL と空の文字列です。ほとんどの場合、「データなし」という 2 つの可能な値を持つことは冗長です。Django の規則では、NULL ではなく空の文字列を使用します。
null=False
(デフォルト)場合、djangoは空の文字列を使用します(つまり、NULLではないことを意味します)null=True
、フィールドは書き込むことができますNULL
(つまりNone
、Python に来ることを意味します)簡単に言うと、 Django はandIntegrityError: NOT NULL constraint
に対してレイズしません。CharField
TextField
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加