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()
предоставит вам отличные полные имена, и вы можете сделать аналогичную вещь, чтобы получить разные категории вакансий.
Они предоставят вам списки значений, а не сами объекты, но если я правильно интерпретирую ваш вопрос, я думаю, что они дадут вам то, что вы хотите.