【问题标题】:Django select distinct not returning properlyDjango选择不同的没有正确返回
【发布时间】:2012-12-29 01:15:41
【问题描述】:

您好,我正在开发一个网站,但有一个问题,为什么会返回原来的样子?

我想从 {table} 中选择不同的“类别”

我尝试了使用和不使用 Flat = True

In [27]: q = EyeMakeUpWaxing.objects.values_list('category', flat=True).distinct()

In [28]: print q.query
SELECT DISTINCT `eye_make_up_waxing`.`category`, `eye_make_up_waxing`.`created_at` FROM `eye_make_up_waxing` ORDER BY `eye_make_up_waxing`.`created_at` ASC

In [29]: print q
[u'EYE_BEAUTIFICATION', u'EYE_BEAUTIFICATION', u'EYE_BEAUTIFICATION', u'MAKE_UP', u'MAKE_UP', u'MAKE_UP', u'MAKE_UP', u'ENHANCER_ADD_ON', u'ENHANCER_ADD_ON', u'ENHANCER_ADD_ON', u'ENHANCER_ADD_ON', u'ENHANCER_ADD_ON', u'ENHANCER_ADD_ON', u'ENHANCER_ADD_ON']

如果这不是 django 语法,请帮助获取正确

【问题讨论】:

    标签: django django-models model


    【解决方案1】:

    那里有一个导致问题的排序声明(来自您的模型/其他地方定义的默认排序)。

    通过order_by()清除订购

    EyeMakeUpWaxing.objects.order_by().values_list('category', flat=True).distinct()
    

    排序会强制执行一个 SELECT created_at,这使得这些条目中的每一个都不同。

    https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct

    【讨论】:

    • 感谢工作。 class Meta: ordering = ['created_at'] 我认为这会导致 order by..
    • @mcddewitt 是的,就是这样。
    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2012-04-26
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多