Запрашивает коллекции для идентификатора коллекции

#wagtail

#wagtail

Вопрос:

Я хочу фильтровать документы по коллекции. Я могу извлекать все документы, устанавливая контекст и добавляя документы с помощью этого запроса:

 context['documents'] = Document.objects.all()
 

Однако это не удается

 context['documents'] = Document.objects.filter(collection='articles')
 

Я получаю сообщение об ошибке, сообщающее мне, что я должен передать идентификатор категории вместо имени категории. Но как мне найти идентификатор категории, зная имя? Кажется, я не могу найти документацию, показывающую, как запрашивать объект collections.

Ответ №1:

Используйте стандартные методы поиска Django в Collection модели:

 from wagtail.core.models import Collection

collection_id = Collection.objects.get(name='articles').id
 

В этом случае, однако, вы можете включить «поиск по имени» в запрос фильтра:

 context['documents'] = Document.objects.filter(collection__name='articles')
 

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

1. Это выглядит правильно, за исключением пути импорта. Как вы их вычисляете? Я получаю: ModuleNotFoundError: нет модуля с именем ‘wagtail.collection’

2. Не бери в голову. Я уже пробовал этот импорт раньше, и я не использовал Collection с заглавной буквы. Когда я вставил новый импорт, я забыл вынуть старый, и он мешал ему. Теперь это работает. Каков наилучший способ узнать, откуда берется весь импорт?