0

在 Django 文档中,除了主键之外,如果另一个属性的设置“唯一”设置为 True,如果将具有相同属性的模型添加到数据库中,则会引发 IntegrityError(很像 PK被处理)。

但是,即使将 unique = True 设置为我的一个字段后,也不会引发 IntegrityErrors,并且在 manage.py shell 中,我公然保存具有相同字段的模型,其中 unique = True,这让我很高兴。

我的模型的 PK 未设置,即 AutoIncrementing Integer(我认为这可能是问题的一部分)。

这是我的 unique=True 字段。

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

这个模型没有其他值得注意的地方,没有外国关系,什么都没有。只是一个必须强制执行(但不是)的唯一字段,以及一个自动递增的 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 回答