Django unique = True nie działa

To jest z dokumentacji django:

Field.unique

Jeśli prawda, to pole musi być unikalne w całej tabeli.

Jest to wymuszane na poziomie bazy danych i przez walidację modelu. Jeśli spróbujesz zapisać model ze zduplikowaną wartością w unikalnym polu, błąd django .db.IntegrityError zostanie podniesiony przez metodę save () modelu.

Oto mój 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

Oto mój plik manage.py sqlall (uruchomiłem syncdb)

CREATE TABLE `MyModel_mymodel` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
     `url` varchar(200) NOT NULL UNIQUE,
     `text` varchar(1000) NOT NULL,

Jednak w powłoce manage.py mogę to zrobić dowolnie:

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

Używam mysql, django 1.5. Czy ktoś ma pomysł, co mogłoby to spowodować?

Używam menedżera niestandardowego, ale wątpię, aby to był problem.

Dzięki.

questionAnswers(2)

yourAnswerToTheQuestion