Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

423
Views
¿Cómo limitar el número de entradas de GeoDjango Postgis django-rest-framework query?

He creado la funcionalidad básica de mapeo de Django a través de este tutorial , pero Python sigue gastando 32 GB de RAM y/o el navegador falla, presumiblemente porque la consulta no se limita a los primeros n resultados y la base de datos tiene millones de entradas.

Mi "vietsets.py":

 from rest_framework import viewsets from rest_framework_gis import filters from core.models import Tablename from core.serializers import MarkerSerializer class MarkerViewSet(viewsets.ReadOnlyModelViewSet): bbox_filter_field = "geom" filter_backends = (filters.InBBoxFilter,) queryset = Tablename.objects.all() serializer_class = MarkerSerializer

Creo que InBBoxFilter debe elaborarse, pero los documentos no parecen mencionar más opciones. Los documentos dicen "si está usando otros filtros, querrá incluir su otro backend de filtro en su vista" dando el ejemplo, filter_backends = (InBBoxFilter, DjangoFilterBackend,) , pero solo quiero limitar la cantidad de resultados para el funcionalidad InBBoxFilter ya proporciona. ¿Puedo escribir algún tipo de DjangoFilterBackend para limitar los resultados? ¿O es mejor abordar esto a través de la funcionalidad django-rest-framework?

¿Cómo puedo decirle que limite la cantidad de resultados o que mejore el rendimiento al usar bases de datos grandes?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Cambiar a abajo. Esta paginación es compatible con restframework_gis.

 from rest_framework import viewsets from rest_framework_gis import filters from rest_framework_gis.pagination import GeoJsonPagination from core.models import Tablename from core.serializers import MarkerSerializer class MarkerViewSet(viewsets.ReadOnlyModelViewSet): bbox_filter_field = "geom" filter_backends = (filters.InBBoxFilter,) queryset = Tablename.objects.all() serializer_class = MarkerSerializer pagination_class = GeoJsonPagination

Puede actualizar su servidor o limitar el resultado (paginación). La paginación más apropiada depende de su solicitud. Puede agrupar el área por alguna regla o lo que sea.

over 4 years ago · Santiago Trujillo Report

0

Puede usar Pagination https://www.django-rest-framework.org/api-guide/pagination/

 from rest_framework import viewsets from rest_framework_gis import filters from rest_framework.pagination import PageNumberPagination from core.models import Tablename from core.serializers import MarkerSerializer class StandardResultsSetPagination(PageNumberPagination): page_size = 100 page_size_query_param = 'page_size' max_page_size = 1000 class MarkerViewSet(viewsets.ReadOnlyModelViewSet): bbox_filter_field = "geom" filter_backends = (filters.InBBoxFilter,) queryset = Tablename.objects.all() serializer_class = MarkerSerializer pagination_class = StandardResultsSetPagination # request host/api/<your_url>?page=<page_num>&page_size=<page_size> # will limit size of your response # and response will include current_page, number_of_elements and last_page.
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!