У меня есть набор моделей Django, как показано на следующей схеме (имена обратных отношений приведены в желтых пузырьков):Как я могу отфильтровать эти записи Django?
Django models http://mipadi.cbstaff.com/images/misc/people_django.jpg
В каждом отношениях, A Person
может иметь 0 или более предметов.
Кроме того, поле slug
является (к сожалению) не уникальным; несколько записей Person
могут иметь одинаковые поля. По сути, эти записи являются дубликатами.
Я хочу, чтобы получить список всех записей, которые удовлетворяют следующим критериям: Все повторяющиеся записи (то есть, имея тот же слизняк) по меньшей мере с одним Entry
или, по крайней мере, один Audio
или, по крайней мере, один Episode
или, по крайней мере, один Article
.
До сих пор, у меня есть следующий запрос:
Person.objects.values('slug').annotate(num_records=Count('slug')).filter(num_records__gt=1)
этой группы все записи по slug
, а затем добавляет атрибут num_records
, который говорит, сколько записей есть что слизняк, но дополнительная фильтрация не выполняется (и Я даже не знаю, будет ли это работать в любом случае, поскольку, учитывая набор повторяющихся записей, может быть, например, и Entry
, а у другого может быть Article
).
В двух словах я хочу найти все повторяющиеся записи и свернуть их вместе со своими ассоциированными моделями в одну запись.
Каков наилучший способ сделать это с помощью Django?
+1 для диаграммы классов в цветах Django! –