2012-05-01 30 views
1

我有一個django模型查詢,需要從特定的表中獲取不同的行,但由於某種原因,它不提取它。Django模型不同的子句

讓我知道你輸入

查詢

Volunteercontacts.objects.order_by('name')- gives me the expected answer ie;ordering by name 
Volunteercontacts.objects.order_by('name').distinct('name')- does not eliminate the duplicate 
+2

https://docs.djangoproject.com/en/dev/ref/models/querysets/ #distinct和http://stackoverflow.com/questions/453477/queryset-api-distinct-does-not-work/460702#460702 – dm03514

+0

向我們顯示輸出。另外,請嘗試顛倒方法調用的順序。 – Marcin

回答

1

你應該不同Volunteercontacts模型和不同的name列值之間進行區分。

對於不同Volunteercontacts模型可以使用不同的(),但在這種情況下沒有效果:

Volunteercontacts.objects.order_by('name').distinct() 

對於不同的列值可以使用的value list字典或數組:

Volunteercontacts.objects.values_list('name', 
             flat=True).order_by('name').distinct() 

另外,請記住,在不同方法中指定字段名稱的功能只能在PostgreSQL中使用。

+0

您能否詳細說明爲什麼-volunteercontacts.objects.order_by('name')。distinct() 不起作用。第二個按預期工作 – user1050619

+0

@ user1050619,第一個示例中的distinct()返回不同的行(即使您有1000x行,名稱爲「FOO」,它們是具有各自主鍵的不同行)。第二個示例返回不同的列值。 –