2017-03-25 3 views
1

나는 현재 위치를 기반으로 학생에게 가장 가까운 시험 센터를 할당하는 GIS 기반 장고 앱을 개발 중입니다. 나는이django 모델에서 계산을위한 임시 필드를 추가하는 방법은 무엇입니까?

class Center(models.Model): 
    name = models.CharField(max_length=500) 
    city = models.CharField(max_length=100) 
    state = models.CharField(max_length=100) 
    latitude = models.FloatField() 
    longitude = models.FloatField() 
    capicity = models.IntegerField() 
    examid = models.ForeignKey(Exam) 

    class Meta: 
     ordering = ['distance'] 

처럼 내 센터 모델은 내가 사용자의 현재 위치와 도시를 수용하고 현재 위치와 주어진 도시에서 사용할 수있는 모든 중심 사이의 거리를 계산하는 함수를 사용하고 있습니다. 그런 다음 거리별로 정렬하십시오. 하지만 센터 모델을 변경하고 기존 센터 모델의 임시 속성으로 거리 속성을 사용하고 싶지 않습니다.

답변

0

단순히 당신은 모델 인스턴스를 속성을 지정할 수 있지만 : 장고이 주문 및 그러한 속성을 구현하기 위해 order_by을 사용하기 때문에 instance.attr = value

, 당신은 Field 클래스의 인스턴스해야 ordering에 사용할 수 없습니다 .

Django annotate functions을 사용하여이를 수행 할 수 있습니다. 설명은 here과 같이 데이터베이스 수준에서 구현되는 함수입니다.

, 당신은 항상 일종의 sorted 내장 사용 할 수 있으며 here

sorted(centeres , key = lambda x : x.distance)

를 설명한대로 당신은 정렬을 위해 distance을 사용할 수 있습니다