mam zestaw modeli Django, jak pokazano na poniższym schemacie (nazwy rewersu związków przedstawiono w żółte pęcherzyki)Jak mogę filtrować te zapisy Django?
Django models http://mipadi.cbstaff.com/images/misc/people_django.jpg
w każdym stosunku, A Person
może być 0 lub więcej przedmiotów.
Dodatkowo pole slug
jest (niestety) nietypowe; wiele rekordów Person
może mieć te same pola karetki. Zasadniczo te rekordy są duplikatami.
Chcę uzyskać listę wszystkich rekordów, które spełniają następujące kryteria: wszystkie zduplikowane rekordy (czyli mające ten sam pocisk) z co najmniej jednym Entry
lub co najmniej jeden Audio
lub co najmniej jeden Episode
lub co najmniej jeden Article
.
tej pory mam następujące zapytanie:
Person.objects.values('slug').annotate(num_records=Count('slug')).filter(num_records__gt=1)
tej grupie wszystkie rekordy według slug
, następnie dodaje atrybut num_records
który mówi, jak wiele rekordów mają ten pocisk, ale dodatkowe filtrowanie nie jest wykonywane (a Nie wiem nawet, czy to i tak by działało, ponieważ, biorąc pod uwagę zestaw duplikatów, można mieć np. I Entry
, a drugie może mieć Article
).
W skrócie, chcę znaleźć wszystkie zduplikowane rekordy i zwinąć je wraz z powiązanymi modelami w jeden rekord.
Jaki jest najlepszy sposób na zrobienie tego z Django?
+1 dla diagramu klas w kolorach Django! –