2013-01-15 28 views
1

你好我正在一個網站上工作,並有一個問題,爲什麼這是返回它的方式?Django select distinct not returned properly

我想選擇{表}

我既沒有平試過不同的「類別」 =真

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'] 

如果這不是在得到正確的這個plz幫助Django的語法

回答

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

+0

謝謝你的工作。 class Meta: ordering = ['created_at'] 我認爲這會導致訂單.. .. – mcd

+0

@mcddewitt是的,就是這樣。 –