【发布时间】:2010-06-15 19:36:23
【问题描述】:
我有一组 Django 模型如下图所示(反向关系的名称显示在黄色气泡中):
(来源:cbstaff.com)
在每个关系中,Person 可能有 0 个或多个项目。
此外,slug 字段(不幸的是)不是唯一的;多个 Person 记录可能具有相同的 slug 字段。这些记录本质上是重复的。
我想获取满足以下条件的所有记录的列表:所有重复记录(即具有相同的 slug)至少有一个 Entry 或至少一个 Audio 或至少一个 @987654329 @或至少一个Article。
到目前为止,我有以下查询:
Person.objects.values('slug').annotate(num_records=Count('slug')).filter(num_records__gt=1)
这将所有记录按slug 分组,然后添加一个num_records 属性,说明有多少记录具有该段,但未执行附加过滤(我什至不知道这是否会正常工作,因为,给定一组重复记录,一个可能有,例如,Entry,另一个可能有一个Article)。
简而言之,我想找到所有重复的记录并将它们连同它们的关联模型一起折叠到一个记录中。
使用 Django 执行此操作的最佳方法是什么?
【问题讨论】:
-
+1 用于 Django 颜色中的类图!
标签: django django-models