2015-10-16 73 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相比,這種做法更加簡單。 –