将django-haystack与django-rest-framework集成?

时间:2014-08-31 08:17:56

标签: django django-rest-framework django-haystack

我想知道,我如何使用django-rest-framework从get请求q=thisterm提供分页的json结果。

我理解使用SearchQuerySet.filter(content=q)的干草堆结束但是如何使用此查询集序列化和创建api视图。我不确定使用哪个视图集,也不确定我需要在其余部分做什么的基本逻辑。

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:11)

经过大量的反复试验,我找到了正确的组合!这是一个开始。

定义序列化程序: serializers.py

class DotaSearchSerializer(serializers.Serializer):
    text = serializers.CharField()
    name = serializers.CharField()
    quality = serializers.CharField()
    type = serializers.CharField()
    rarity = serializers.CharField()
    hero = serializers.CharField()
    image = serializers.CharField()
    desc = serializers.CharField()

创建视图: views.py

class DotaSearchViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):

    serializer_class = DotaSearchSerializer
    permission_classes = (IsAuthenticated,)
    authentication_classes = (SessionAuthentication, BasicAuthentication)

    def get_queryset(self, *args, **kwargs):
        request = self.request
        queryset = EmptySearchQuerySet()

        if request.GET.get('q') is not None:
            query = request.GET.get('q')
            queryset = SearchQuerySet().filter(content=query)

        return queryset

请注意,您可能希望清理输入并执行其他安全检查。

路由它: urls.py

router.register(r'search', api_views.DotaSearchViewSet, base_name='search')