Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

314
Visualizações
filtrar usuarios dentro de una distancia dada en Django rest framework

Estoy tratando de implementar un filtro personalizado en el marco de descanso de Django, que devuelve a los usuarios dentro de una distancia determinada, estoy usando filtros de Django. Supongo que la latitud y la longitud ya están proporcionadas por el front-end.

esto es lo que probé. No sé si es la forma correcta de hacerlo. tengo el siguiente error

 'RenameAttributes' object is not iterable

Aquí está mi código

Vistas.py

 def calculateDistance(lon1, lat1, lon2, lat2): lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) return 6371 * ( acos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon1 - lon2)) ) class CustomFilter(django_filters.rest_framework.DjangoFilterBackend): def filter_queryset(self, request , queryset,view): alluser = queryset newQueryset = [] distparam = request.GET.get('distance') if distparam and bool(int(distparam)): for user in alluser: current_user_long = request.user.Longitude current_user_lat = request.user.Latitude alluser_long = user.Longitude alluser_lat = user.Latitude distance = calculateDistance(current_user_long, current_user_lat, alluser_long, alluser_lat) if distance > distparam: newQueryset.push(user) return newQueryset return queryset class UserFilter(filters.FilterSet): class Meta: model = User fields =['gender', 'last_name', 'first_name' ] class UserListView(generics.ListAPIView): queryset = User.objects.all() serializer_class = UserSerializer filterset_class = UserFilter filter_backends = CustomFilter

Modelos.py

 class User(AbstractUser): username = None email = models.EmailField( max_length=100, verbose_name='email', unique=True) gender = models.CharField( max_length = 20, choices = GENDER_CHOICES, default = 'М' ) avatar= ProcessedImageField(upload_to='avatars', processors=[ResizeToFill(400, 400), Watermark()], format='JPEG', options={'quality': 72}) likes = models.ManyToManyField('User', blank=True, related_name="like") latitude = models.DecimalField(max_digits=22, decimal_places=16, blank=True, null=True) longitude = models.DecimalField(max_digits=22, decimal_places=16, blank=True, null=True) USERNAME_FIELD = 'email' REQUIRED_FIELDS = [] objects = UserManager()
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Creo que el error que aparece aquí no está relacionado con el cálculo/filtrado de la distancia, podría ser una configuración incorrecta. Asegúrese de que DEFAULT_FILTER_BACKENDS sea una tupla o una lista válida.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda