【发布时间】:2012-12-29 07:10:54
【问题描述】:
我有一个模型 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。
【问题讨论】:
-
什么是“通用”外键?
-
我使用了与此处所述相同的设置,docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#id1
标签: django performance postgresql foreign-key-relationship