我有一个django应用程序,其模型如下:
ObjectA是一个简单的对象,它是由几个字段扩展而来的,比如说,一个特定的对象是一个名为“NAME”的字符字段和一个名为“ORDER”的整数字段。A是抽象的,这意味着数据库中没有A对象,而是。。。在
对象B和C是A的特化,这意味着它们继承了A并添加了一些其他字段。在
现在假设我需要字段名称以字母“Z”开头的所有对象,按顺序字段排序,但我也需要这些对象的所有B和C特定字段。现在我看到了两种方法:
a)分别对B和C对象执行查询,获取两个列表,合并它们,手动排序并处理。在
b)查询A对象,查找以“Z”排序者“ORDER”开头的名称,并根据结果查询b和C对象以获取所有剩余数据。在
这两种方法听起来效率都很低,第一种方法我必须自己订购,第二种方法我必须多次查询数据库。在
有没有一种神奇的方法可以把所有B和C对象以一种方法排序?或者至少是一种比上述两种方法更有效的方法?在
提前谢谢!在
布鲁诺
如果
A
可以是具体的,那么可以使用select_related
在一个查询中完成这一切。在使用“b”方法进行查询,将允许您“引入”所有剩余数据,而无需分别查询b和C模型。您可以使用“点小写模型名”关系。在
http://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance
您可能需要尝试并排除doesnotex异常。我的django有点生疏了。祝你好运。在
这个问题得到了回答here。在
{{a3}使用项目^ a2}。在
相关问题 更多 >
编程相关推荐