2014-08-31 11 views
9

मैं जानना चाहता हूं कि मैं एक अनुरोधित q=thisterm से एक पृष्ठांकित जेसन परिणाम प्रदान करने के लिए django-rest-framework का उपयोग कैसे कर सकता हूं।django-rest-framework के साथ django-haystack को एकीकृत करना?

मैं SearchQuerySet.filter(content=q) का उपयोग करके चीजों के घास के अंत को समझता हूं, हालांकि मैं इस क्वेरीसेट के साथ एक एपीआई दृश्य कैसे क्रमबद्ध और बना सकता हूं। मुझे यकीन नहीं है कि कौन सा विचार उपयोग करना है और न ही मूल तर्क जो मुझे बाकी के अंत में करने की आवश्यकता होगी।

किसी भी मदद की सराहना की जाएगी।

धन्यवाद

उत्तर

10

परीक्षण और त्रुटि के एक बहुत बाद, मैं सही संयोजन मिल गया है! यहां एक शुरुआत है। दृश्य 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 

कृपया ध्यान दें आप इनपुट को साफ और अन्य सुरक्षा जांच करने के लिए चाहते हो सकता है

एक serializer को परिभाषित करें ।

मार्ग यह: urls.py

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

इस अत्यंत उपयोगी था। धन्यवाद। क्या आप मुझे आउटपुट जेएसओएन में परिणाम गिनती जोड़ने के बारे में सलाह दे सकते हैं? –

+0

Django REST Framework के लिए Haystack पर एक नज़र डालें: https://github.com/inonit/drf-haystack – Daviddd

+0

आपको HayStack's SearchQuerySet प्राप्त करने से आपके आवश्यक परिणाम मिलते हैं? क्या हेस्टैक व्यू (खोज फ़ॉर्म के मामले में) का उपयोग करते समय यह वही तंत्र है या क्या कोई प्रदर्शन अंतर संभव है? –

संबंधित मुद्दे