在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,
....
谢谢。
答案 0 :(得分:1)
尝试删除并重新创建数据库。如果在创建数据库表后添加unique
约束,则不会在数据库中更新{{1}}约束。如果您不想丢失数据,则需要在数据库中手动添加属性。