Выберите отличные значения из поля таблицы

Я борюсь, получая мою голову вокруг ORM Django. То, что я хочу сделать, получают список отличных значений в поле на моей таблице.... эквивалент одного из следующего:

SELECT DISTINCT myfieldname FROM mytable

(или альтернативно)

SELECT myfieldname FROM mytable GROUP BY myfieldname

Я, по крайней мере, хотел бы сделать это Django путь прежде, чем обратиться к сырым данным sql. Например, с таблицей:

идентификатор, улица, город

Мэйн-Стрит, 1, Hull

2, другая улица, оболочка

3, Bibble путь, Лестер

4, иначе, Лестер

5, главная улица, Londidium

Я хотел бы добраться:

Оболочка, Лестер, Londidium.

87
задан DhiaTN 8 December 2016 в 10:43
поделиться

1 ответ

Допустим, ваша модель - «Магазин»

class Shop(models.Model):
    street = models.CharField(max_length=150)
    city = models.CharField(max_length=150)

    # some of your models may have explicit ordering
    class Meta:
        ordering = ('city')

Поскольку у вас может быть установлен атрибут Meta class ordering , вы можете использовать order_by () без параметров чтобы очистить любой порядок при использовании independent () . См. Документацию в разделе order_by ()

. Если вы не хотите, чтобы к запросу применялось какое-либо упорядочение, даже упорядочение по умолчанию, вызовите order_by () без параметров.

и independent () в примечании, где обсуждаются проблемы с использованием independent () с упорядочением.

Чтобы запросить вашу БД, вам просто нужно вызвать:

models.Shop.objects.order_by().values('city').distinct()

Он возвращает словарь

или

models.Shop.objects.order_by().values_list('city').distinct()

Этот возвращает ValuesListQuerySet , который вы можете преобразовать в список . Вы также можете добавить flat = True в values_list , чтобы сгладить результаты.

См. Также: Получить отдельные значения Queryset по полю

178
ответ дан 24 November 2019 в 07:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: