2

django ダミー モデルを次のように定義しました。

class Test(models.Model):
    test = CharField(max_length = 100, default = 'Test!')

次のSQLになります

CREATE TABLE `uman_test` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `test` varchar(100) NOT NULL
);

しかし、SQLのデフォルト値も期待しています:

CREATE TABLE `uman_test` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `test` varchar(100) NOT NULL DEFAULT 'Test!'
);
  • パイソン2.7.3
  • ジャンゴは1.5.4です
  • バックエンド MySQL

django モデル作成者がデフォルト値を無視するのはなぜですか?

ありがとうございました!

4

1 に答える 1

8

フィールドのデフォルト値は、データベースではなく Django の内部で処理されるため、SQL スキーマにはありません。モデル オブジェクトを保存する前に、Django はこのフィールドのデフォルト値を設定します。

ドキュメントから:「フィールドのデフォルト値。これは、値または呼び出し可能なオブジェクトにすることができます。呼び出し可能な場合、新しいオブジェクトが作成されるたびに呼び出されます。」

呼び出し可能 (関数) をデフォルト値として持つことができますが、これは SQL スキーマでは表すことができません。

于 2013-10-27T00:05:29.197 に答える