Лучше всего использовать Django raw наборы запросов , я использую его с MySQL для выполнения полнотекстового сопоставления. Если все данные находятся в базе данных, а Postgres предоставляет возможность сопоставления, то имеет смысл использовать их. Плюс Postgres предлагает некоторые действительно полезные вещи с точки зрения постановки и т.д. с полнотекстовыми запросами.
По сути, он позволяет вам написать фактический запрос, который вы хотите, но возвращает модели (если вы явно запрашиваете таблицу моделей).
Это дает вам преимущество в том, что вы можете протестировать точный запрос , который вы будете использовать первым в Postgres, документация довольно хорошо охватывает полнотекстовые запросы.
Основная проблема с необработанными наборами запросов на данный момент заключается в том, что они не поддерживают подсчет. Поэтому, если вы будете возвращать много данных и у вас будут ограничения памяти для вашего приложения, вам может потребоваться сделать что-то умное.
«Неточное» соответствие, однако, на самом деле не является частью возможностей полнотекстового поиска. Вместо этого вам нужен модуль postgres fuzzystrmatch contrib. Его использование описано здесь с индексами.