Po wielu prób i błędów znalazłem właściwą kombinację! Oto początek.
Zdefiniuj serializatora: 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()
Utwórz widok: 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
Zwróć uwagę, może chcesz wyczyścić dane i wykonywać inne kontrole bezpieczeństwa .
Route go: urls.py
router.register(r'search', api_views.DotaSearchViewSet, base_name='search')
to było niezwykle pomocne. Dzięki. Czy możesz doradzić mi, jak dodać liczbę wyników do wyjściowego JSON? –
Spójrz na Haystack dla Django REST Framework: https://github.com/inonit/drf-haystack – Daviddd
Otrzymujesz wymagane wyniki od otrzymania SearchQuerySet HayStack? Czy jest to ten sam mechanizm stosowany podczas korzystania z widoku HayStack (w przypadku formularzy wyszukiwania) lub czy są jakieś różnice wydajności? –