7

簡単な質問があります。私のモデルでは、テーブルの 1 つの構造を定義しています。Booleanfieldただし、 :のデフォルト値を設定したいのですownが、うまく機能していないようです。モデル内の私のコードは次のとおりです。

class Books(models.Model):
    title = models.CharField(max_length=100)
    own = models.BooleanField(default=True)

descmysql でテーブルを作成すると、次のようになります ( own にはデフォルトの Null があることに注意してください)。

ここに画像の説明を入力

また、次のことをしようとすると:

INSERT INTO `counters_books` (`title`) VALUES ('My Brain is Open')

次のエラーが表示されます。

ERROR 1364 (HY000): Field 'own' doesn't have a default value

PS を使用NullBooleanFieldすることで問題を解決できることを理解しています。ただし、defaultそのフィールドに値を指定しなければ行を挿入できないとしたら、どうすればよいでしょうか。

4

1 に答える 1

5

defaultSQL レベルでは処理されません。モデル レベルで処理されます。したがって、db 環境で生の SQL クエリを実行すると、エラーがスローされます。Django 環境でこれを試してください。

>> book_obj = Book('Harry Potter')
>> book_obj.save()

モデル レベルで実行すると、既定値が SQL DB に挿入されます。

于 2013-06-25T01:50:54.667 に答える