Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法为android中的搜索配置haystack elasticsearch_Android_Django_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Django Haystack_Django Rest Framework Gis - Fatal编程技术网 elasticsearch,django-haystack,django-rest-framework-gis,Android,Django,elasticsearch,Django Haystack,Django Rest Framework Gis" /> elasticsearch,django-haystack,django-rest-framework-gis,Android,Django,elasticsearch,Django Haystack,Django Rest Framework Gis" />

无法为android中的搜索配置haystack elasticsearch

无法为android中的搜索配置haystack elasticsearch,android,django,elasticsearch,django-haystack,django-rest-framework-gis,Android,Django,elasticsearch,Django Haystack,Django Rest Framework Gis,我从这个[教程][1]开始,但我不知道如何在android应用程序中设置搜索。到目前为止,我已经使用django REST框架制作了一个模型,然后在android中使用改进来生成GET、PUT和POST请求 现在我想按名称搜索我的产品 上面的教程试图创建搜索HTML页面并在该HTML页面中键入查询,但我需要一个端点,在这里我可以发送GET搜索请求 请帮我理解怎么做 class Product(models.Model): name=models.CharField(max_len

我从这个[教程][1]开始,但我不知道如何在android应用程序中设置搜索。到目前为止,我已经使用django REST框架制作了一个模型,然后在android中使用改进来生成
GET
PUT
POST
请求

现在我想按名称搜索我的产品

上面的教程试图创建搜索HTML页面并在该HTML页面中键入查询,但我需要一个端点,在这里我可以发送
GET
搜索请求

请帮我理解怎么做

class Product(models.Model):
        name=models.CharField(max_length=50)
        mrp = models.DecimalField(max_digits=20)
        company=models.CharField(max_length=100)

class ProductSerializer(serializers.ModelSerializer):

    class Meta:
        model = Product
        fields = ('id', 'name', 'mrp', 'company')

class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer  

    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)

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

    def get_model(self):
        return Product

    def index_queryset(self, using=None):
        """Used when the entire index for model is updated."""
        return self.get_model().objects.all()
现在,我应该如何使用这个ItemIndex来使用haystack创建搜索url。 [1] :

在DRF中:

class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer
    permission_classes = (IsAuthenticated,)

    @list_route(methods=['POST'])
    def search(self, request):
        key = request.data['key']
        queryset = Product.objects.filter(name__icontains=key)
        serializer = ProductSerializer(queryset, many=True)
        return Response(serializer.data)
在Android Okhttp3演示中:

    RequestBody requestBody = new FormBody.Builder()
            .add("key", ProductName)
            .build();
    Request request = new Request.Builder()
            .post(requestBody)
            .url(Constants.ProductSearch)
            .build();

    HttpClientUtil.getClient().newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {}

        @Override
        public void onResponse(Call call, final Response response) throws IOException {
            final String data = response.body().string();
            Log.e("Http",data);
        }
    });

我能理解如何将ProductIndex与这个ProductViewSet一起使用,你能详细解释一下吗。谢谢你的帮助。你想用DRF中的get方法获取密钥吗?不,我想用haystack elastic search为android创建一个搜索引擎。像drf haystack这样的东西。我帮不了你