Доступ к значению из поля списка в Django
У меня есть поле списка в моей модели django для пользователей следующим образом: name = models.CharField() email = models.CharField() profile = ListField()
Я использую Монго в качестве базы данных хранения с помощью django_mongodb_engine. Для одного пользователя объект модели может быть как
{имя: 'Алиса', электронная почта: 'abc', профили: ['Читать']}Для другого пользователя это может быть:
{имя: 'Джон', электронная почта: 'xyz', профили: ['Читать', 'Написать']}
Я хочу найти пользователей, которым назначен профиль "Читать". В оболочке mongo db это можно сделать, просто добавив в запрос
{'profile': 'Read'}, Можем ли мы выполнить такой поиск через наборы запросов django? Когда я попытался, это дало мне исключение "индексы списка должны быть целыми числами, а не str". Пожалуйста, направьте меня в этом отношении. Спасибо
1 ответ
Решение
Одним из возможных решений может быть использование необработанных запросов с помощью MongoDBManager
:
from django_mongodb_engine.contrib import MongoDBManager
class UserModel(models.Model):
name = models.CharField()
email = models.CharField()
profiles = ListField()
objects = MongoDBManager()
а потом:
UserModel.objects.raw_query({'profiles': 'Read'})