Làm thế nào để bạn tạo một lớp SearchIndex trừu tượng, tương tự như cách Django cho phép bạn tạo các mô hình cơ sở trừu tượng?Cách tạo một lớp Haystack SearchIndex trừu tượng
Tôi có một số SearchIndex mà tôi muốn cung cấp cho các trường cơ bản giống nhau (object_id, dấu thời gian, tầm quan trọng, v.v.). Hiện tại, tôi đang sao chép tất cả mã này, vì vậy tôi đang cố gắng tạo một "BaseIndex" và chỉ đơn giản là có tất cả các lớp chỉ mục thực được kế thừa từ điều này.
Tôi đang cố gắng:
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...
nhưng điều này mang lại cho tôi những lỗi:
NotImplementedError: You must provide a 'model' method for the '<myapp.search_indexes.BaseIndex object at 0x18a7328>' index.
vì vậy tôi sau đó đã cố gắng:
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()
nhưng những mang lại cho tôi lỗi:
SearchFieldError: The index 'PersonIndex' must have one (and only one) SearchField with document=True.
Làm cách nào để kế thừa từ lớp con SearchIndex tùy chỉnh?
A [chỉ số tìm kiếm 'Meta' lớp] (http://django-haystack.readthedocs.org/en/latest/searchindex_api.html#modelsearchindex) không có một thuộc tính' abstract' ... Bạn không biết bạn đến từ đâu? –