2014-05-11 3 views
0

Django에는 ListFields : Polygon (및 PolygonForm)과 Line (및 LineForm)의 두 모델이 있습니다. 사용자로부터 전달 된 많은 정보를 얻으면 다음을 사용하여 새 정보를 만듭니다.ListField가 Django ModelForm에 저장되지 않습니다.

partialPolygon = Polygon(user=1001) 
polygon = PolygonForm(request.POST.copy(), instance=partialPolygon) 
polygon.data['line_ids'] = json.loads(polygon.data['line_ids']) 
polygon.data['order'] = json.loads(polygon.data['order']) 
newPoly = polygone.save() 

newLine = Line(line_id=lineId, 
    point_list=line['point_list'], 
    ... 
    polygons=sect['polygons'], 
    user=1001) 
newLine.save() 

두 번째 방법은 훌륭합니다. 모든 것이 잘 저장됩니다. 첫 번째 부분은 대부분 잘 작동하지만 전달 된 목록 대신 항상 ListField에 대한 빈 목록을 저장합니다. 나는 할 수있다 :

print polygon.data['line_ids'] 

그리고 그것을 출력한다 [u'bla bla ', u'bla bla', ...].

첫 번째 방법으로 목록을 제대로 저장하지 못하는 이유는 무엇입니까? 미리 감사드립니다!

답변

0

와 함께이 라인

polygon.data['line_ids'] = json.loads(polygon.data['line_ids']) 

를 교환해야 할 것 같아요 입력을 양식 입력으로 가져옵니다. 필자의 모델에서는 json.loads()와 json.dumps()를 사용하여 목록을 양식 입력 용 텍스트로 전송했습니다. 따라서 ModelForm이 입력 양식을 가져 와서 저장하려고하면 원시 목록이 아니라 문자열을 예상합니다.

0

내가, 그것을 형태로 표시하는 방법을 이야기해야하는의 ListField가 모델에 추가되면이

polygon.line_ids = json.loads(polygon.data['line_ids']) 
+0

아무 것도 변경되지 않습니다. 하나는 내가 생각하는 어느쪽으로 든 사용할 수 있습니다. (시도하고 이것도 작동하지 않습니다) – roboguy222

관련 문제