2012-09-13 11 views
10

Mam bazę danych MySQL niestety używaną z Django 1.4.1. Funkcja Distinct działa tylko dla POSTGRESQL, jeśli dobrze to rozumiem.Django MySQL odrębne zapytanie o uzyskanie wielu wartości

trzeba dokonać odrębne zapytanie składać się z wielu wartości, podczas gdy tylko jeden odrębny,

podobne; Ten działa dla POSTGRE, ale nie dla MYSQL, Otrzymuję następujący błąd;

DISTINCT na polach nie jest obsługiwany przez ten backend bazy

staff = Staff.objects.order_by('person__full_name').distinct('person__full_name') 

Potem próbował

staff = Staff.objects.values('person__full_name','staff_job_categories').distinct().order_by('person__full_name') 

Ale nie dostać różne wartości, bo ja się też kategorię pracy personelu . Ale kiedy go nie zawieram, nie mogę go zdobyć jako tablicy.

Każdy pomysł?

Odpowiedz

16

.distinct([*fields]) działa tylko w PostgreSQL.

Od distinct dokumentacja

Oto różnica. W przypadku normalnego wywołania distinct() baza danych porównuje każde pole w każdym wierszu podczas określania, które wiersze są odrębne. W przypadku wywołania distinct() z określonymi nazwami pól, baza danych porówna tylko określone nazwy pól.

Jak zaznaczono wszystkie pola w rekordzie są zaznaczone. Zwykle w twoim przypadku otrzymujesz rekordy o różnych wartościach pól (bardziej prawdopodobne jest, że masz do czynienia z wieloma tabelami ManyToMany lub ForeignKey).

konsolidacji jako tablicy można odwołać swoje wcześniejsze pytanie Django Query distinct values works but i cant use the query result

5
names = Staff.objects.order_by('person__full_name').values('person__full_name').distinct() 

daje wyraźne pełne nazwy, a można zrobić coś podobnego, aby uzyskać odrębne kategorie pracy.

Podadzą ci listę wartości, nie same obiekty, ale jeśli poprawnie zinterpretuję twoje pytanie, myślę, że dostarczy ci to, czego chcesz.