Вопрос

I have the following class based view, and i am getting "module" object is not callable error when i make an ajax request for /?id=145

Any ideas ?

class CityList(ListView):
    template_name = "profile/profile.html"
    model = City

    def render_to_response(self, context, **response_kwargs):

        if self.request.is_ajax() and self.request.GET.get('query'):
            query = self.request.GET.get('query')
            city_filter = [{'name': i.name,
                                'id': i.id}
                                for i in City.objects.filter(
                                name__icontains=query)]
            results = city_filter
            return HttpResponse(json.dumps(results),
                                mimetype='application/json')
        elif self.request.GET.get('id'):
            query = self.request.GET.get('id')
            if query:
                return HttpResponse(json.dumps(list(self.object_list.filter(
                    id=query).values('name', 'id')
                )), mimetype='application/json')
Это было полезно?

Решение

data = serializers.serialize('json', self.object_list.filter(id=query))

totally solved my problem. I am not sure why json.dumps didnt work but serializer is working like charm with code below.

  class CityList(ListView):
        template_name = "profile/profile.html"
        model = City

        def render_to_response(self, context, **response_kwargs):

            if self.request.is_ajax() and self.request.GET.get('query'):
                query = self.request.GET.get('query')
                city_filter = [{'name': i.name,
                                    'id': i.id}
                                    for i in City.objects.filter(
                                    name__icontains=query)]
                results = city_filter
                return HttpResponse(json.dumps(results),
                                    mimetype='application/json')
            if self.request.GET.get('id'):
                query = self.request.GET.get('id')
                if query:

                    data = serializers.serialize('json', self.object_list.filter(id=query))
                    return HttpResponse(data)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top