Wie erstellen Sie eine abstrakte SearchIndex-Klasse, ähnlich wie Django abstrakte Basismodelle erstellen kann?So erstellen Sie eine abstrakte Heuhaufen SearchIndex-Klasse
Ich habe mehrere SearchIndexes, die ich die gleichen grundlegenden Felder (object_id, timestamp, Wichtigkeit usw.) geben möchte. Momentan kopiere ich diesen ganzen Code, also versuche ich einen "BaseIndex" zu erstellen und lasse einfach alle realen Indexklassen davon erben.
ich versucht:
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...
aber das gibt mir den Fehler:
NotImplementedError: You must provide a 'model' method for the '<myapp.search_indexes.BaseIndex object at 0x18a7328>' index.
so dann habe ich versucht:
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()
aber diese gibt mir Fehler:
SearchFieldError: The index 'PersonIndex' must have one (and only one) SearchField with document=True.
Wie erben ich von einer benutzerdefinierten SearchIndex-Unterklasse?
A [Suchindizes 'Meta' Klasse] (http://django-haystack.readthedocs.org/en/latest/searchindex_api.html#modelsearchindex) nicht ein Attribut' Resümees ... Weiß ich nicht, woher du das hast? –