2015-10-16 70 views
0

我有以下型号:Django的:添加索引元场

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文件,因为它是外部依赖项的一部分。

你知道这种问题的简单解决方案吗?

谢谢。

回答

1

是的,你可以使用模型元。

,如果你不需要继承元从TimeStampedModel只是用这样的:

class Meta: 
    ... 

否则,你需要明确地告诉Django寻找到父母的荟萃第一这样的:

class Meta(TimeStampedModel.Meta): 

这可能是一个骇人听闻的解决方案,但也许你可以尝试使用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 
+1

我使用了最后一个解决方案,并且完美运行。与index_together相比,这种做法更加简单。 –