Скажите, что ваша модель 'Магазин'
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()
без параметров, чтобы очистить любой порядок при использовании distinct()
. См. Документацию под order_by
()
Если вы не хотите, чтобы к запросу применялся какой-либо порядок, даже порядок по умолчанию, вызовите order_by () без параметров.
и distinct()
в примечании, где обсуждаются вопросы использования distinct()
с порядком.
Чтобы запросить вашу БД, вам просто нужно позвонить:
models.Shop.objects.order_by().values('city').distinct()
Возвращает словарь
или
models.Shop.objects.order_by().values_list('city').distinct()
Этот возвращает ValuesListQuerySet
, который вы можете разыграть до list
.
Вы также можете добавить flat=True
к values_list
, чтобы сгладить результаты.
См. Также: Получить различные значения Queryset по полю