Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Proximidad Django

Estas en el tema de Proximidad Django en el foro de Python en Foros del Web. Que tal estoy queriendo implementar la siguiente solucion http://tenderlovingcode.com/blog/web...django-sqlite/ lo que no me queda claro es como implmento lo que esta en los dos primeros ...
  #1 (permalink)  
Antiguo 22/03/2013, 11:16
 
Fecha de Ingreso: julio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Proximidad Django

Que tal estoy queriendo implementar la siguiente solucion

http://tenderlovingcode.com/blog/web...django-sqlite/

lo que no me queda claro es como implmento lo que esta en los dos primeros bloques de codigo , es decir soy nuevo y no entiendo en donde va ese codigo :S

la verdad no dice mucho mas y no he encontrado mucha info googleando
  #2 (permalink)  
Antiguo 22/03/2013, 12:18
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Proximidad Django

Debería funcionar si lo pones dentro de modes.py

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 22/03/2013, 12:26
 
Fecha de Ingreso: julio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Proximidad Django

modes ? o models ?
  #4 (permalink)  
Antiguo 22/03/2013, 12:32
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Proximidad Django

models.py, error mio
__________________
Grupo Telegram Docker en Español
  #5 (permalink)  
Antiguo 22/03/2013, 12:41
 
Fecha de Ingreso: julio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Proximidad Django

Código:
from django.db import models

# Create your models here.
class lugarManager(models.Manager):
	""" location model manager """
	def within(self,location,distance):
		"""
		finds locations within <distance> kilometers of <location>
		"""
		subquery  = 'distance(%(latitude)s,%(longitude)s,latitude,longitude) ' % location.__dict__
		condition = 'proximity < %s' % distance
		order     = 'proximity'
		return self.extra(select={'proximity':subquery},where=[condition]).order_by(order)
class Lugar(models.Model):
	objects = lugarManager()
	nombre = models.CharField(max_length=200)
   	descripcion = models.CharField(max_length=255)
   	direccion = models.CharField(max_length=255)
	latitud = models.DecimalField(max_digits=12, decimal_places=8)
	longitud = models.DecimalField(max_digits=12, decimal_places=8)
	def __unicode__(self):
		return self.nombre
eso tego ne mis models pero no me hallo donde poner
Código:
from math import sin, cos, acos, radians
 
def distance(p1_lat,p1_long,p2_lat,p2_long):
        """ calculates the distance between p1 and p2 """
 
    	multiplier = 6371 # for kilometers
        #multiplier = 3959 # for miles
    	return ( multiplier *
    	acos(
    		cos( radians(p1_lat) ) *
    		cos( radians(p2_lat) ) *
    		cos( radians(p2_long) - radians(p1_long) ) +
    		sin( radians(p1_lat) ) * sin( radians(p2_lat) )
    		)
    	)
ni tampoco

Código:
from django.dispatch import receiver
 
@receiver(connection_created)
def setup_proximity_func(connection,**kwargs):
    """ add the proximity function to sqlite """
    connection.connection.create_function("distance", 4, distance)
  #6 (permalink)  
Antiguo 22/03/2013, 12:42
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Proximidad Django

Todo en models :)
__________________
Grupo Telegram Docker en Español
  #7 (permalink)  
Antiguo 22/03/2013, 12:49
 
Fecha de Ingreso: julio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Proximidad Django

me marca un error al hacer syncdb

connection_created is not defined
  #8 (permalink)  
Antiguo 22/03/2013, 13:36
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Proximidad Django

Falta importar algo:

Código Python:
Ver original
  1. from django.db.backends.signals import connection_created

Saludos
__________________
Grupo Telegram Docker en Español
  #9 (permalink)  
Antiguo 22/03/2013, 14:32
 
Fecha de Ingreso: julio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Proximidad Django

TEnias razon eso soluciono ese problema , solo que al parecer ahora me dice que el global name distance is not defined segun yo esta definido pongo mi codigo tal como lo tengo

Código:
from django.db import models

# Create your models here.
class lugarManager(models.Manager):
	""" location model manager """
	def within(self,location,distance):
		"""
		finds locations within <distance> kilometers of <location>
		"""
		subquery  = 'distance(%(latitude)s,%(longitude)s,latitude,longitude) ' % location.__dict__
		condition = 'proximity < %s' % distance
		order     = 'proximity'
		return self.extra(select={'proximity':subquery},where=[condition]).order_by(order)

class Lugar(models.Model):
	objects = lugarManager()
	nombre = models.CharField(max_length=200)
   	descripcion = models.CharField(max_length=255)
   	direccion = models.CharField(max_length=255)
	latitud = models.DecimalField(max_digits=12, decimal_places=8)
	longitud = models.DecimalField(max_digits=12, decimal_places=8)
	def __unicode__(self):
		return self.nombre
	 
	def distance(p1_lat,p1_long,p2_lat,p2_long):
	        """ calculates the distance between p1 and p2 """
	 
	    	multiplier = 6371 # for kilometers
	        #multiplier = 3959 # for miles
	    	return ( multiplier *
	    	acos(
	    		cos( radians(p1_lat) ) *
	    		cos( radians(p2_lat) ) *
	    		cos( radians(p2_long) - radians(p1_long) ) +
	    		sin( radians(p1_lat) ) * sin( radians(p2_lat) )
	    		)
	    	)

	from django.db.backends.signals import connection_created
	from django.dispatch import receiver

	@receiver(connection_created)
	def setup_proximity_func(connection,**kwargs):
	    """ add the proximity function to sqlite """
	    connection.connection.create_function("distance", 4, distance)
  #10 (permalink)  
Antiguo 22/03/2013, 14:46
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Proximidad Django

Es por que no debe de ir dentro del modelo.

Saludos
__________________
Grupo Telegram Docker en Español
  #11 (permalink)  
Antiguo 22/03/2013, 15:00
 
Fecha de Ingreso: julio-2009
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Proximidad Django

Tienes toda la razon , te lo agradezco de verdad

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:36.