Django:向元字段添加索引

Ale*_*Grs 3 django django-models

我有以下模型:

from model_utils.models import TimeStampedModel
class MyModel(TimeStampedModel):
    ....
    name = models.CharField(max_length=100)
    ....
Run Code Online (Sandbox Code Playgroud)

该模型基于 Django Utils ( https://django-model-utils.readthedocs.org/en/latest/models.html#timestampedmodel ),它向我的模型添加created和modified字段。

我需要知道的是将 a 添加db_index到我的模型的修改字段的方法。但我无法修改 TimeStampedModel 文件,因为它是外部依赖项的一部分。

您知道此类问题的任何简单解决方案吗?

谢谢你。

Jes*_*mez 5

是的,您可以使用模型 Meta。

如果您不需要从 TimeStampedModel 继承元数据,请使用以下命令:

class Meta:
   ...
Run Code Online (Sandbox Code Playgroud)

否则你需要明确地告诉 django 首先像这样查看父级的元数据:

class Meta(TimeStampedModel.Meta):
Run Code Online (Sandbox Code Playgroud)

这可能是一个骇人听闻的解决方案,但也许您可以尝试使用 index_together 使 django 为您的模型创建索引:

像这样:

class Meta(TimeStampedModel.Meta):
    index_together = [
        ["modified",],
    ]
Run Code Online (Sandbox Code Playgroud)

试试看,告诉我它是否有效

编辑:

另一个解决方案来自:如何从抽象基类覆盖模型字段的默认值:

尝试将此添加到您的 MyModel 类

MyModel._meta.get_field('modified').db_index = True
Run Code Online (Sandbox Code Playgroud)