gpt4 book ai didi

python - 带有 rest-framework 序列化器的 Django-haystack 给出结果 None

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:24 24 4
gpt4 key购买 nike

我正在尝试使用 django-haystack 在我的应用程序中包含一个基于 elasticsearch 的搜索。我正在使用 django-rest-framework 构建 API。以下是我的索引:

class ArtistIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, model_attr='name')

def get_model(self):
return Artist

这是我的观点:

def search(request):
q = request.GET.get('q', '')
if q is '':
return Response(status=status.HTTP_400_BAD_REQUEST)
all_results = SearchQuerySet().models(Artist).filter(content=Clean(q))
serializer = ArtistSerializer(all_results, many=True)
print serializer.data
return Response(status=status.HTTP_200_OK)

还有我的序列化器:

class ArtistSerializer(serializers.ModelSerializer):
class Meta:
model = Artist
fields = (
'name',
'type',
'gender',
'begin_life',
'end_life',
)

但是,当我到达终点时,print 语句打印如下内容:

[{'name': None, 'type': None, 'gender': None, 'begin_life': None, 'end_life': None}, {'name': None, 'type': None, 'gender': None, 'begin_life': None, 'end_life': None}, {'name': None, 'type': None, 'gender': None, 'begin_life': None, 'end_life': None}, {'name': None, 'type': None, 'gender': None, 'begin_life': None, 'end_life': None}, {'name': None, 'type': None, 'gender': None, 'begin_life': None, 'end_life': None}]

有人可以告诉我我做错了什么吗?

谢谢。

最佳答案

我找到了一种更好的序列化数据的方法。我现在正在使用这个:

from django.core import serializers

-- snippet --

def search(request):
q = request.GET.get('q', '')
if q is '':
return Response(status=status.HTTP_400_BAD_REQUEST)
all_results = SearchQuerySet().filter(content=Clean(q))
serializer = serializers.serialize("json", [q.object for q in all_results])
print serializer
return Response(status=status.HTTP_200_OK)

现在,我可以在多个模型中进行搜索,而不必担心序列化数据 :)

结果数据是这样的:

{
"fields": {
"name": "Megadeth",
"end_life": "",
"gid": "a9044915-8be3-4c7e-b11f-9e2d2ea0a91e",
"gender": "",
"type": "2",
"begin_life": "1983-6-"
},
"model": "InQusic.artist",
"pk": 975773
}

因此,现在我可以在我的客户端上区分结果。

关于python - 带有 rest-framework 序列化器的 Django-haystack 给出结果 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26959441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com