2011-03-16 6 views
0

내 모델 :장고 포인트 정의

class Mod(models.model) 
    name = models.CharField(max_length = 255) 
    co_x = models.DecimalField(max_digits = 11, decimal_places = 8) 
    co_y = models.DecimalField(max_digits = 11, decimal_places = 8) 

내보기 : 여기 7km에 가장 가까운 지점을 공제하고 싶지만는 "제공

def closedPoint(request): 
    location_name = str(request.POST.get("lo", default="")) 
    nokta_x = int(float(request.POST.get("x")) 
    nokta_y = int(float(request.POST.get("y")) 
    poi = Point(nokta_x, nokta_y, srid = 900913) 

    sk = Mod() 
    poi_s = Point(sk.co_x, co_y, srid = 900913) 

    resut_poi = Mod.objects.filter(poi_s__distance_lte = (poi, D(km = 7))).filter(name__in = location_name) 

포인트 초기화에 주어진 잘못된 매개 변수

+0

어떤 도움을 주시겠습니까? – Aragon

+0

왜 아무도 대답하지 않는다. – Aragon

답변

1

이제 오류 메시지가 으로 Point 클래스를 초기화 할 때 발생합니다.

귀하의 첫 번째 심각한 문제입니다.

오류 메시지로 판단하면 poi_sNone, None으로 초기화됩니다. Mod()은 값이없는 저장되지 않은 인스턴스이며 유효하지 않은 매개 변수입니다. 상기 고정 후 나타난다

sk = Mod() # unsaved Mod instance with no defaults 
poi_s = Point(sk.co_x, co_y, srid = 900913) 
# sk.co_x is None 

번째 문제는 터플을 받아 유효 검색 유형 모델 (PointField 특정, __distance)을 질의한다. 그것을 해결하는 방법, 나는 모른다.

GeoDjango가 해당 튜플을 DB 조회로 변환하는 방법을 살펴보아야합니다.

+0

사실 내 문제는 내 모델에 DecimalField가 있기 때문에 GeoManager에 대한 쿼리를 만들지 않아 ...이 문제를 해결할 수있는 방법을 모른다. – Aragon

+0

내 대답을 읽었습니까? 오류 라인은 어디에 있습니까? 이 오류는 십진수 오류 또는 django 오류가 아니며이 Point 클래스 및 초기화 지점 (X, Y, Z)에 매우 특이하게 들립니다 –

+0

올바른 위치를 찾았습니다 _poi_s = Point (sk.co_x, co_y, srid = 900913) _ – Aragon

관련 문제