2011-04-25 5 views
2

여기 Newb. 사과.Django 객체의 메서드 결과를 데이터베이스에 저장하는 방법은 무엇입니까?

class Place(models.Model): 
    address = models.CharField(max_length=100) 
    [...] 
    def coordinates(self): 
    location = Location(self.address) 
    return location 

"위치"방법 일을하고, 문제가되지 않습니다 :

나는 있습니다. 템플릿에 Place.coordinates가 잘 보이지만 db에 저장할 수 있기를 원합니다. views.py에서 액세스하십시오.

제 질문은 계산이 한 번만 완료되도록 (예 : 양식을 처음 채울 때) 내 데이터베이스에 좌표를 저장할 수 있습니까?

감사합니다. (모든 문서를 읽었을 때, 솔루션을 읽었을 때 이해할 수있는 기회가 너무 많으므로 이해가 안 될 것입니다.)

답변

4

먼저 모델을 정의하십시오 좌표에 대한 :

class Coordinates(models.Model): 
    [whatever coordinates consist of] 

그런 다음 Place 모델 필드로 coordinates를 추가합니다.

class Place(models.Model): 
    address = models.CharField(max_length=100) 
    [...] 
    coordinates = models.ForeignKey(Coordinates) 

그런 식으로 좌표가 db에 저장되도록 지정했습니다. 이제

, 먼저 좌표를 작성, 데이터베이스에 새 장소를 추가 한 다음 데이터베이스에 장소를 추가하는 뷰 :

def add_place(form): 
    address = form.cleaned_data['address'] 
    coordinates = Coordinates.objects.get_or_create(Location(address)) 
    [...] 
    place = 
     Place.objects.get_or_create(address=address, coordinates=coordinates, ...) 
+0

감사합니다! 나는 새로운 일반 뷰를 사용하고 있기 때문에 Place 클래스 내에서 save 메소드를 사용하여 종료했다. –

관련 문제