2016-08-08 1 views
-2

Я использую Django, с mongoengine. У меня есть класс Classes с списком надписей, и я хочу получить документы, у которых есть идентификатор в этом списке.Django Array содержит поле

classes = Classes.objects(inscriptions__contains=request.data['inscription']).all()

ответ

2

Может быть, я что-то не хватает ... но мне кажется, что вы должны использовать .filter():

classes = Classes.objects.filter(inscriptions__contains=request.data['inscription']) 
+0

На самом деле он работает, не научил его работать и с массивами. Благодарю. В чем разница между фильтром и тем, как я это сделал? – elhoucine

1

Этот ответ является ссылкой на ваш комментарий для ответа rnevius

В Django ORM всякий раз, когда вы вызываете вызов базы данных с использованием ORM, он обычно возвращает либо QuerySet, либо объект модели, если используется get()/number, если вы используете count() и т. Д., В зависимости от функций, которые вы используете, которые возвращают, кроме набора запросов.

Результат функции Queryset можно использовать для дальнейшего усовершенствования, например, если вы хотите выполнить команду order() или собирать только отдельные() и т. Д. Queryset является ленивым, что означает, что он попадает только в базу данных, когда они фактически используются не тогда, когда они назначены. Вы можете найти более подробную информацию о них here.

Где функции, которые не возвращают запрос, не могут реализовать такие вещи.

Потратьте время и просмотрите документацию Queryset, в которой приведены подробные пояснения с примерами. Полезно понять поведение, чтобы сделать ваше приложение более эффективным.

 Смежные вопросы

  • Нет связанных вопросов^_^