Python 向django中的继承字段添加索引

Python 向django中的继承字段添加索引,python,django,django-models,django-inheritance,Python,Django,Django Models,Django Inheritance,我有许多需要时间戳和缓存控制的模型,因此继承自我正在使用的mixin库lck.django 但是,由于某种原因,可时间跟踪的中定义的创建的和修改的字段没有索引,即使同一mixin库中的许多其他字段也没有索引,我根据模型在不同程度上使用基于这些字段的排序,并希望在我的postgres数据库中对其中一个或两个字段进行索引。(我接受这样的观点,即在这些字段上建立索引并不是我真正需要的,但我认为这是一个非常明确的索引用例。) 我的理解是,由于Django继承模型中的一些怪癖,如果我只是尝试用同名字段加上

我有许多需要时间戳和缓存控制的模型,因此继承自我正在使用的mixin库
lck.django

但是,由于某种原因,
可时间跟踪的
中定义的
创建的
修改的
字段没有索引,即使同一mixin库中的许多其他字段也没有索引,我根据模型在不同程度上使用基于这些字段的排序,并希望在我的postgres数据库中对其中一个或两个字段进行索引。(我接受这样的观点,即在这些字段上建立索引并不是我真正需要的,但我认为这是一个非常明确的索引用例。)

我的理解是,由于Django继承模型中的一些怪癖,如果我只是尝试用同名字段加上索引覆盖这些字段,系统将尝试创建两个同名字段,并阻塞
syncdb

有没有什么好办法给它们编制索引?我可以想出几个选择:

  • TimeTrackable
    的代码复制/粘贴到我的应用程序中(不干燥,但至少后果是可预测的)
  • south
    迁移或syncdb钩子之类的东西中添加一个单独的索引步骤(对于试图通过查看应用程序代码来判断哪些列被索引的人来说,这似乎很脆弱,而且让人困惑,因为有些列确实在模型文件中被显式索引)
  • 初始化应用程序后,在postgres中手动为其编制索引(我必须将此应用程序交给客户端,因此我希望尽量减少手动部署步骤)
  • 以某种方式使用/滥用索引来索引单个字段,而不是它的预期用途(如果我尝试,不知道这会产生什么后果)

还有其他好的方法吗?

我最终使用的解决方案是在子模型上一起滥用
索引。无论是否丑陋,它都是索引单个字段的最方便的方法(不需要检查
index_合起来
元组是否有多个成员),而且它是声明性的,阅读起来相对清晰。

对于那些正在寻找Django解决方案的人来说,因为您希望答案“适合我的用例”您可能想给我们一些关于用例实际是什么的提示。为什么您“不确定我是否有信心它将应用于所有情况”@GarethRees抱歉,我将编辑以详细说明为什么我觉得手动添加索引不合适。至于south或syncdb,我对此持怀疑态度的原因是,这将是程序性的,而不是声明性的:例如,如果稍后有人通过迁移删除其中一个模型上的字段,然后再将其添加回来,会怎么样?这看起来很好,因为模型中没有索引,但是索引会被删除。更糟糕的是,如果您从一个新的数据库同步数据库,它们就会存在,但如果您使用south迁移,它们就不会存在。这不是一个巨大的实际障碍,但对我来说,它看起来丑陋而脆弱。