我有一个模型,它包含一个通用外键关系,并在同一个应用程序中A
限制了对 3 个其他模型的选择(将它们视为和)。而且我知道我们不能使用或任何其他查询集操作的通用外键的局限性。B
C
D
filter
get
所以为了实现这样的目标,A.objects.filter(generic_object__name="foo")
我必须首先过滤 B、C 和 D 的对象作为查询集,迭代它们并使用通用反向关系将A
对象作为列表(而不是查询集)。
我不确定它将如何影响数据库上的 SQL 性能,因为查询不是直接的。
PS:我需要使用通用外键,所以请建议任何 SQL 改进而不是重新设计模型。
使用 Django 1.4.3 和 Postgres。