Dopo un sacco di tentativi ed errori, ho trovato la combinazione giusta! Ecco un inizio.
Definire un serializzatore: 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()
Creare la vista: 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
Si prega di notare che si potrebbe desiderare di pulire l'ingresso ed eseguire altri controlli di sicurezza .
percorso è: urls.py
router.register(r'search', api_views.DotaSearchViewSet, base_name='search')
questo è stato estremamente utile. Grazie. Puoi consigliarmi come aggiungere il conteggio dei risultati al JSON in uscita? –
Dai un'occhiata a Haystack per Django REST Framework: https://github.com/inonit/drf-haystack – Daviddd
Ottieni i risultati richiesti ottenendo il SearchQuerySet di HayStack? È lo stesso meccanismo seguito quando si utilizza una vista HayStack (In caso di moduli di ricerca) o sono possibili differenze di prestazioni? –