【发布时间】:2013-06-03 15:14:07
【问题描述】:
你如何制作一个抽象的 SearchIndex 类,类似于 Django 让你制作抽象基础模型的方式?
我有几个 SearchIndexes,我想给出相同的基本字段(object_id、时间戳、重要性等)。目前,我正在复制所有这些代码,因此我正在尝试创建一个“BaseIndex”并简单地让所有真正的索引类都继承自此。
我试过了:
class BaseIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
object_id = indexes.IntegerField()
timestamp = indexes.DateTimeField()
class Meta:
abstract = True
class PersonIndex(BaseIndex):
...other fields...
但这给了我错误:
NotImplementedError: You must provide a 'model' method for the '<myapp.search_indexes.BaseIndex object at 0x18a7328>' index.
然后我尝试了:
class BaseIndex(object):
text = indexes.CharField(document=True, use_template=True)
object_id = indexes.IntegerField()
timestamp = indexes.DateTimeField()
class PersonIndex(BaseIndex, indexes.SearchIndex, indexes.Indexable):
first_name = indexes.CharField()
middle_name = indexes.CharField()
last_name = indexes.CharField()
但是这些给了我错误:
SearchFieldError: The index 'PersonIndex' must have one (and only one) SearchField with document=True.
如何从自定义 SearchIndex 子类继承?
【问题讨论】:
-
A search indexes
Metaclass 没有属性abstract... 不知道你从哪里得到的?
标签: python django django-haystack