Django Model Distinct子句

时间:2012-05-01 19:12:02

标签: 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 个答案:

答案 0 :(得分:1)

您应该区分不同的Volunteercontacts模型和不同的name列值。

对于不同的Volunteercontacts模型,您可以使用distinct(),但在这种情况下无效:

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

对于不同的列值,您可以使用value list的字典或数组:

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

另外,请记住,在distinct方法中指定字段名称的功能仅在PostgreSQL中可用。

答案 1 :(得分:0)

Django 1.4在原始问题中提供了预期的行为(假设您使用的是Posgtres):

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