Uniqify Django模型具有唯一属性而不是使用PK

时间:2013-07-13 02:41:32

标签: python django

在Django文档中,声明除了主键之外,如果另一个属性具有设置" unique"设置为True,如果将具有相同属性的模型添加到数据库中,则会抛出IntegrityError(非常类似于PK的处理方式)。

但是,即使将unique = True设置为我的某个字段后,也不会抛出IntegrityErrors,而在manage.py shell中,我会公然保存具有相同字段的模型,其中unique = True,并且& #39; s让我。

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

这是我唯一的=真实字段。

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,
    ....

谢谢。

1 个答案:

答案 0 :(得分:1)

尝试删除并重新创建数据库。如果在创建数据库表后添加unique约束,则不会在数据库中更新{{1}}约束。如果您不想丢失数据,则需要在数据库中手动添加属性。