2013-03-25 13 views
14

Jak zrobić następujące zapytanie:DISTINCT ON w Django

OrderNotes.objects.filter(item=item).distinct('shared_note') 

Zasadniczo trzeba uzyskać wszystkie OrderNotes przedmioty, odrębne na shared_note. Kiedy próbuję to zrobić, otrzymuję:

raise NotImplementedError('DISTINCT ON fields is not supported by this database backend') 

NotImplementedError: DISTINCT ON fields is not supported by this database backend 

Używam mysql i nie mogę tutaj zmienić bazy danych. Jakie byłoby obejście tego problemu w django?

+0

można zakładać model? – Ngenator

Odpowiedz

47
OrderNotes.objects.filter(item=item).values_list('shared_note', flat=True).distinct() 
+5

Co zrobić, jeśli chcesz mieć pełne obiekty, a nie tylko unikatowe wartości? :-) Trochę utknąłem ... –

4

Jest to najlepszy wymyśliłem:

>>> items, item_ids = [], [] 
>>> for item in OrderNotes.objects.filter(shared_note=219): 
...  if item.shared_note not in item_ids: 
...   items.append(item) 
...   item_ids.append(item.shared_note)