Return a JsonResponse with search results as defined in serialize_result(), by default: { results: [{id: "123" text: "foo"}], pagination: {more: true} }
(self, request, *args, **kwargs)
| 12 | admin_site = None |
| 13 | |
| 14 | def get(self, request, *args, **kwargs): |
| 15 | """ |
| 16 | Return a JsonResponse with search results as defined in |
| 17 | serialize_result(), by default: |
| 18 | { |
| 19 | results: [{id: "123" text: "foo"}], |
| 20 | pagination: {more: true} |
| 21 | } |
| 22 | """ |
| 23 | ( |
| 24 | self.term, |
| 25 | self.model_admin, |
| 26 | self.source_field, |
| 27 | to_field_name, |
| 28 | ) = self.process_request(request) |
| 29 | |
| 30 | if not self.has_perm(request): |
| 31 | raise PermissionDenied |
| 32 | |
| 33 | self.object_list = self.get_queryset() |
| 34 | context = self.get_context_data() |
| 35 | return JsonResponse( |
| 36 | { |
| 37 | "results": [ |
| 38 | self.serialize_result(obj, to_field_name) |
| 39 | for obj in context["object_list"] |
| 40 | ], |
| 41 | "pagination": {"more": context["page_obj"].has_next()}, |
| 42 | } |
| 43 | ) |
| 44 | |
| 45 | def serialize_result(self, obj, to_field_name): |
| 46 | """ |