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

标签 python django django-models django-inheritance

我有很多模型需要时间戳和缓存控制,因此继承自 TimeTrackable来自 lck.django,这是我正在使用的一个混合库。

但是,由于某些原因,TimeTrackable 中定义的createdmodified 字段没有被索引,即使同一个 mixin 中的许多其他字段也是如此库是,我根据模型在不同程度上大量使用基于这些字段的排序,并希望在我的 postgres 数据库中索引其中一个或两个。 (我对在这些字段上建立索引并不是我真正需要的想法持开放态度,但我认为这是一个非常明确的索引用例。)

我的理解是,由于 Django 的继承模型中的怪癖,如果我只是试图用同名字段和索引覆盖那些字段,系统将尝试创建两个同名字段并阻塞 同步数据库

有什么好的方法可以索引它们吗?我可以想到几个选项:

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

还有其他好的方法吗?

最佳答案

我最终采用的解决方案是在子模型上滥用 index_together。不管丑陋与否,这是索引单个字段的最方便的方法(不检查 index_together 元组是否有多个成员)并且它是声明式的并且相对清晰易读。

关于python - 向django中的继承字段添加索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913136/

相关文章:

DJANGO:如何以形式而不是文字 "model object"呈现模型对象名称?

django - 修改模型后如何更新已部署的 django-app 的数据库(postgresql)?

Python : How to find in set of rows, 一个元素小于1而其他元素大于1?

python - 如何将 Parse JSON 写入 CSV 文件?

django - 如何使用 mongodb 引擎在 django-nonrel1.5 中设置 MIDDLEWARE_CLASSES?

django - MEDIA_ROOT 的正斜杠 "/"与 os.path.join()

python - django 从查询结果中删除 unicode

python - 如何处理大量小部件的 QPropertyAnimation

Python - "xor"以最有效的方式处理 "bytes"中的每个字节

javascript - 如何覆盖 Django 的 ModelAdmin 的 "media"属性并使其动态化?