我有以下模型:
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 ),它将 created
和 modified
字段添加到我的模型。
我需要知道的是将 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/