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()

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

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