我有几个具有相同字段值的记录。我需要过滤查询集以使模型实例包含唯一字段记录,而不仅仅是查询集中的值。 如何过滤查询集以保持实例仅包含一个字段的唯一值?
>>> dist = Language.objects.distinct()
>>> for i in dist:
>>> print i.language
>>> English
>>> English
>>> dist = Language.objects.values('language').distinct()
>>> for i in dist:
>>> print i['language']
>>> English
答案 0 :(得分:0)
可能有一种更有效的方法,但首先想到的是:
ids = (lang['max_id'] for lang in Language.objects.values('language').annotate(max_id=Max('pk')))
results = Language.objects.filter(pk__in=ids)
基本上按语言分组并选择具有每种语言最高ID的字段记录。