Django MySQL отдельный запрос для получения нескольких значений
у меня есть в MySQL база данных, к сожалению, используется с Джанго 1.4.1. Функция Distinct работает только для POSTGRESQL, если я правильно понял.
Я должен сделать отдельный запрос, состоящий из нескольких значений, в то время как только отдельный,
Как; Это работает для POSTGRE, но не с MYSQL, Я получаю следующую ошибку;
DISTINCT ON fields не поддерживается этой базой данных бэкэнд
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')
но я не получаю различных значений, потому что я получаю также категории работы персонала. Но когда я не содержал его, я не мог получить его как массив.
есть идеи ?
2 ответов
.distinct([*fields])
работает только в PostgresSQL.
С distinct документация
вот разница. Для обычного вызова distinct() база данных сравнивает каждое поле в каждой строке при определении того, какие строки различны. Для вызова distinct() с указанными именами полей база данных будет сравнивать только указанные имена полей.
как указано, все поля в записи проверяются. Скорее всего, в вашем случае вы получаете записи с разными значениями полей (более вероятный случай, если вы запрашиваете несколько таблиц ManyToMany или ForeignKey relations).
для консолидации в виде массива вы можете обратиться к вашему предыдущему вопросу Django Query distinct values работает, но я не могу использовать результат запроса
names = Staff.objects.order_by('person__full_name').values('person__full_name').distinct()
даст вам различные полные имена, и вы можете сделать аналогичную вещь, чтобы получить различные категории заданий.
они дадут вам списки значений, а не сами объекты, но если я правильно интерпретирую ваш вопрос, то я думаю, что они дадут вам то, что вы хотите.