Django: Haystack and Elasticsearch with Mongoengine



我正在尝试将Haystack Elasticsearch与使用MongoDB作为数据库的django REST应用程序集成。这是我的源代码:

models.py

class Books(Document):
ISBN = fields.StringField(null=False, required=True)
book_name = fields.StringField(null=False, required=True)
genre = fields.StringField(null=False, required=True)
author = fields.StringField(null=False, required=True)
publisher = fields.StringField(null=False,required=True)
price = fields.IntField(required=True)
stock = fields.IntField(required=True)

search_indexes.py

class BookIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
book = indexes.CharField(model_attr="book_name")
price = indexes.CharField(model_attr="price")
def get_model(self):
return Books
def index_queryset(self, using=None):
return self.get_model().objects.filter(
created__lte=timezone.now()
)

serializer.py

class BookIndexSerilizer(HaystackSerializer):
class Meta:
index_classes = [BookIndex]
fields = [
'text', 'book', 'price'
]

views.py

class BookSearchView(HaystackViewSet):
index_models = [Books]
serializer_class = BookIndexSerilizer

urls.py

router = routers.DefaultRouter()
router.register('search/', BookSearchView, 'Books')

settings.py

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://localhost:9200/',
'INDEX_NAME': 'haystack',
},
}

当我点击搜索URL时,我收到以下异常: AttributeError('要添加到查询中的模型必须派生自 Model。 出了什么问题?

问题是Books是从Document派生出来的,它需要模型class Books(Document):派生自像class Books(models.Model):这样的Model

最新更新