#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 с заглавной буквы. Когда я вставил новый импорт, я забыл вынуть старый, и он мешал ему. Теперь это работает. Каков наилучший способ узнать, откуда берется весь импорт?