Django:将索引添加到元字段

标签 django django-models

我有以下模型:

from model_utils.models import TimeStampedModel
class MyModel(TimeStampedModel):
    ....
    name = models.CharField(max_length=100)
    ....

此模型基于 Django Utils ( https://django-model-utils.readthedocs.org/en/latest/models.html#timestampedmodel ),它将 createdmodified 字段添加到我的模型。

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

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

谢谢。

最佳答案

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

如果您不需要从 TimeStampedModel 继承元数据,只需使用它:

class Meta:
   ...

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

class Meta(TimeStampedModel.Meta):

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

像这样:

class Meta(TimeStampedModel.Meta):
    index_together = [
        ["modified",],
    ]

尝试一下,告诉我它是否有效

编辑:

另一个解决方案来自:How to override the default value of a Model Field from an Abstract Base Class :

尝试将其添加到您的 MyModel 类中

MyModel._meta.get_field('modified').db_index = True

关于Django:将索引添加到元字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33174680/

相关文章:

django - Django 中基于行的权限

Django 如何仅将 example.com 重定向到 https 并将 *.example.com 重定向到 http?

python - 在 Django 中分组

python - Django 1.8 无法找到静态 css 文件

django - 如何在 Django 中使用逗号分隔的参数过滤查询(DRF 过滤)

django - 尝试在 django 模型中设置 BooleanField 值时出现奇怪的问题

Django Admin Inline 返回空的额外实例

django - 当时区支持处于事件状态时,DateTimeField 收到一个简单的日期时间

python - 在服务器中更改 Django 的数据库结构

python - 如何创建和序列化非托管模型 Django