0

Django docs では、主キー以外に、別の属性の「unique」設定が True に設定されている場合、同じ属性を持つモデルがデータベースに追加されている場合に IntegrityError がスローされることが述べられていました (PK の方法とよく似ています)。扱います)。

ただし、unique = True をフィールドの 1 つに設定した後でも、IntegrityErrors はスローされず、manage.py シェルでは、unique = True である同一のフィールドを持つモデルをあからさまに保存しています。

私のモデルの PK は設定されていません。別名 AutoIncrementing Integer です (これが問題の一部である可能性があります)。

これが私の unique=True フィールドです。

url = models.URLField("The URL", unique=True)

このモデルについて他に特筆すべき点はありません。Foreign 関係も何もありません。強制する必要がある (ただし強制されない) 一意のフィールドと、自動インクリメント PK のみ。

一部の検索エンジンのために、PK は自動インクリメント整数のままにする必要があります。

モデルの SQLall は次のとおりです。

BEGIN:
    CREATE TABLE `Model_model` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `url` varchar(200) NOT NULL UNIQUE,
    ....

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

4

1 に答える 1

1

データベースを削除して再作成してみてください。uniqueデータベース テーブルの作成後に制約を追加しても、データベースでは制約が更新されません。データを失いたくない場合は、プロパティを手動でデータベースに追加する必要があります。

于 2013-07-13T06:42:58.023 に答える