Come si crea una classe SearchIndex astratta, simile alla modalità con cui Django consente di creare modelli di base astratti?Come creare una classe Haystack SearchIndex astratta
Ho diversi indici di ricerca che mi piacerebbe fornire gli stessi campi di base (object_id, timestamp, importanza, ecc.). Attualmente sto duplicando tutto questo codice, quindi sto provando a creare un "BaseIndex" e ho semplicemente ereditato tutte le classi indice reali da questo.
sto provato:
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...
ma questo mi dà l'errore:
NotImplementedError: You must provide a 'model' method for the '<myapp.search_indexes.BaseIndex object at 0x18a7328>' index.
così ho poi provato:
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()
ma questi mi dà errore:
SearchFieldError: The index 'PersonIndex' must have one (and only one) SearchField with document=True.
Come ereditare da una sottoclasse SearchIndex personalizzata?
A [indici di ricerca 'classe Meta'] (http://django-haystack.readthedocs.org/en/latest/searchindex_api.html#modelsearchindex) non ha un attributo' abstract' ... Non sai da dove lo hai preso? –