这是Django的文档:Django的独特=真不工作
Field.unique
If True, this field must be unique throughout the table.
This is enforced at the database level and by model validation. If you try to save a model with a duplicate value in a unique field, a django .db.IntegrityError will be raised by the model’s save() method.
这里是我的models.py
class MyModel(models.Model):
# my pk is an auto-incrementing field
url = models.URLField("URL", unique=True)
text = models.TextField(max_length=1000)
# my model is just two fields, one pk (unique), and another unique field,
#, the url
这里我是manage.py sqlall(我跑了执行syncdb)
CREATE TABLE `MyModel_mymodel` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`url` varchar(200) NOT NULL UNIQUE,
`text` varchar(1000) NOT NULL,
但是,在manage.py shell中,我可以自由地做到这一点:
>>> from MyModel.models import MyModel
>>> MyModel().save() # it works fine!? Not even the text was checked for!
>>> MyModel(url="blah").save()
>>> MyModel(url="blah").save() # it still works!
# I checked the mysql database afterwards, the models were saved just fine, they
# however did have different PK's (auto incrementing fields).
我使用的是mysql,django 1.5。有没有人有一个想法有可能造成这种情况?
我正在使用自定义管理器,但我怀疑这是问题所在。
谢谢。
我'IntegrityError:列网址是不是第二个'为MyModel(URL = “嗒嗒”)unique'例外保存()'。你是否按原样粘贴了你的代码? – falsetru
'text'字段定义有错字..'模式'。我怀疑你没有复制和粘贴你的代码。 – falsetru
不,我不认为代码需要张贴,只有两个领域值得注意 –