Django MySQL - отдельный запрос для получения нескольких значений

У меня есть база данных MySQL, к которой, к сожалению, используется Django 1.4.1. Отдельная функция работает только для POSTGRESQL, если я правильно ее понимаю.

Я должен сделать отдельный запрос, состоящий из нескольких значений, но только один,

Как; Это работает для POSTGRE, но не с MYSQL, Я получаю следующую ошибку:

Поля DISTINCT ON не поддерживаются этой базой данных базы данных

staff = Staff.objects.order_by('person__full_name').distinct('person__full_name')

Затем я попробовал

staff = Staff.objects.values('person__full_name','staff_job_categories').distinct().order_by('person__full_name')

Но я не получаю отличные значения, потому что получаю также категории рабочих мест. Но когда я не вмещаю его, я не мог бы получить его как массив.

Любая идея?

Ответ 1

.distinct([*fields]) работает только в PostgresSQL.

Из distinct документация

Здесь разница. Для нормального разного() вызова база данных сравнивает каждое поле в каждой строке при определении того, какие строки различны. Для отдельного() вызова с указанными именами полей база данных будет сравнивать только указанные имена полей.

Как указано, все поля в записи проверяются. Скорее всего, в вашем случае вы получаете записи с разными значениями полей (более вероятно, случай, если вы запрашиваете несколько таблиц ManyToMany или ForeignKey).

Для консолидации в виде массива вы можете ссылаться на свой предыдущий вопрос Различные значения Django Query, но я не могу использовать результат запроса

Ответ 2

names = Staff.objects.order_by('person__full_name').values('person__full_name').distinct()

предоставит вам отличные полные имена, и вы можете сделать аналогичную вещь, чтобы получить разные категории вакансий.

Они предоставят вам списки значений, а не сами объекты, но если я правильно интерпретирую ваш вопрос, я думаю, что они дадут вам то, что вы хотите.