Я пытаюсь получить список различных внешних ключей, и я написал это:
my_ids = Entity.objects.values('foreign_key').distinct()
Но я получаю только список внешних ключей UNDISTINCT... Что мне не хватает?
Спасибо!
Я пытаюсь получить список различных внешних ключей, и я написал это:
my_ids = Entity.objects.values('foreign_key').distinct()
Но я получаю только список внешних ключей UNDISTINCT... Что мне не хватает?
Спасибо!
Вот для подсказки! Оба решения не будут работать на 100%... но я как бы объединил их:)
Передача аргумента в отдельный файл doesnt работает для MySQL-баз данных (afaik)
Это работает и возвращает только один объект:
Entity.objects.order_by('foreign_key').values('foreign_key').distinct()
Но спасибо в любом случае:)
Возможно, вы захотите пойти с этим:
Entity.objects.order_by().values_list('foreign_key', flat=True).distinct()
Entity.objects.values_list('foreign_key', flat=True).distinct().order_by()
не работает с порядком
Любые поля, используемые в вызове order_by(), включаются в SQL SELECT колонны. Иногда это может привести к неожиданным результатам при использовании в соединение с четными(). Если вы заказываете по полям из связанных модель, эти поля будут добавлены к выбранным столбцам, и они могут сделать иначе, чтобы повторяющиеся строки выглядели отчетливо. Поскольку дополнительные столбцы не отображаются в возвращаемых результатах (они есть только для поддержка заказа), иногда кажется, что неявные результаты возвращается.
Аналогично, если вы используете запрос values () для ограничения столбцов выбраны столбцы, используемые в любом порядке order_by() (или по умолчанию упорядочение) по-прежнему будут задействованы и могут повлиять на уникальность Результаты.
Мораль здесь заключается в том, что если вы используете разные(), будьте осторожны упорядочение по смежным моделям. Аналогично, при использовании различных() и значения() вместе, будьте осторожны при упорядочении по полях, не входящим в values ().
https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct
Entity.objects.order_by('foreign_key').distinct('foreign_key')
Если у вас уже есть их как список, то преобразуйте его в set()
, чтобы получить различные значения.