Создание «уникального» значения поля во всей коллекции в моделях Django MongoDB?

#python #django #mongodb

#python #django #mongodb

Вопрос:

Мне трудно понять, как сделать значение поля уникальным при использовании Django MongoDB.my models.у py есть модель:

 class Projects(models.Model):
    projectName =models.CharField(max_length = 100,unique=True)
    projectManager = EmbeddedModelField('Users')
  

Здесь я хочу, чтобы всякий раз, когда добавляется новый экземпляр проекта, он должен иметь уникальное имя проекта.Но этот код не работает, поскольку он позволяет добавлять одно и то же значение для ProjectName и не выдает мне ошибку.Я прочитал, что можно сделать значение поля уникальным с помощью индексов в pymongo, но как мне это сделать в Django MongoDB.

Комментарии:

1. Какую базу данных вы используете? Вы добавили unique параметр после запуска syncdb ?

2. Я использую MongoDB с оболочкой Django MongoDB, и да, я добавил уникальный параметр перед запуском syncdb

3. Вероятно, django неправильно воспроизводит поля. Можете ли вы извлечь список индексов? оболочка mongo -> использовать <вашу базу данных> -> db.<ваша коллекция>.getIndices()

4. [ { «v»: 1, «key»: { » id»: 1 }, «ns»: «API.Users», «name»: «_id » } ]

5. Таким образом, он не создал уникальный индекс. Ну, я понятия не имею, что делать дальше.

Ответ №1:

Ответ на мой собственный вопрос заключается в том, что мне пришлось добавить unique = True для поля модели перед выполнением syncdb.Благодаря culebron.Теперь оно работает