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