Как получить все страницы, ожидающие модерации, в Wagtail
Я пытаюсь найти способ запросить все страницы, которые в настоящее время ожидают модерации.
Я попробовал PageRevision.objects.filter(submitted_for_moderation=True).values('page_id')
, но, похоже, он возвращает только несколько из них, я не понимаю почему.
Если я смогу получить все страницы, находящиеся на модерации, тогда я смогу получить то, что мне действительно нужно: все страницы, ожидающие модерации для пользователя, вошедшего в систему в данный момент.
Большое спасибо.
Поле submitted_for_moderation
используется только устаревшей системой модерации, которая была упразднена в Wagtail 2.10 - страницы, отправленные на модерацию после этого, будут использовать систему Workflow.
Эквивалентом вашего запроса будет:
PageRevision.objects.filter(task_states__status='in_progress').values('page_id')
Начиная с Wagtail 4.0 PageRevision
был заменен на Revision
модель, которая охватывает и модели сниппетов, так что это станет:
Revision.page_revisions.filter(task_states__status='in_progress').values('object_id')
Я не знаю, какую версию Wagtail вы используете, но, судя по представленному коду, похоже, что вы используете устаревшую функциональность модерации. Обратите внимание, что она устарела и будет полностью удалена в 2024 году. Если вы сможете обновиться, то список страниц, находящихся на модерации (а также в рабочем процессе), будет автоматически добавлен в приборную панель для ваших пользователей. (Если вы обновляетесь постепенно, система должна автоматически создать простой рабочий процесс, имитирующий старую систему модерации)