Django unique = True не работает
Это из документации Django:
Field.unique
Если True, это поле должно быть уникальным по всей таблице.
Это обеспечивается на уровне базы данных и проверкой модели. Если вы попытаетесь сохранить модель с повторяющимся значением в уникальном поле, метод save () модели вызовет django .db.IntegrityError.
Вот мой 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
Здесь мой is 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 я могу свободно сделать это:
>>> 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. У кого-нибудь есть идея, что может быть причиной этого?
Я использую собственный менеджер, но сомневаюсь, что это проблема.
Благодарю.