Appengine DataStore에 쓸 수있는 속성을 동적으로 선택하십시오
-
19-08-2019 - |
문제
누구든지 Appengine의 엔터티에 글을 쓰고 싶은 속성을 동적으로 선택하려고 했습니까? 예를 들어:
5 개의 필드가있는 웹 양식이 있으며 특정 사용자는 해당 필드의 일부 하위 집합을 작성합니다. 데이터가있는 필드 만 서버에 게시합니다 (예 : 필드 1,2,4). 서버 측에서 속성 1,2 및 4 만 우아하게 쓰는 방법은 무엇입니까? 모델 클래스에는 속성 이름 (model.properties ()) 사전을 반환하는 함수가 있지만 속성 이름을 선택하는 데 어떻게 사용합니까?
SQL에서는 Model.Properties () Dictionary에 게시 된 필드와 일치하여 삽입 또는 업데이트 문을 작성합니다. Appengine SDK의 DB 모듈 코드를 살펴보고 모델 클래스에 속성 객체 모음이 있는지 확인하지만 디스크에서 모듈을 찾을 수 없습니다 (Python 및 Appengine에 약간 새로운 것입니다).
업데이트 : Trunk/Google/Appengine/Ext/DB를 읽었습니다.이니.py는 속성을 그룹으로 언급 할 방법이 없음을 확인했습니다. 해결 방법을 아는 사람이 있습니까?
이견있는 사람?
Update2 :이 질문은 AppEngine의 Google 그룹에서 답변되었습니다. http://groups.google.com/group/google-appengine/browse_thread/thread/b50be862f6d94b6e#
해결책
파이썬 모듈은 다음과 같습니다.
from google.appengine.ext.db import Key
from google.appengine.api.datastore import Get, Put
def edit_item(request, db_id):
objKey = Key(str(db_id))
if request.method == 'POST':
objEntity = Get(objKey)
for k, v in request.POST.iteritems():
objEntity[k]=v
Put(objEntity)
return HttpResponseRedirect('/')
query = TestModel.get(objKey)
return render_to_response('edit.html', ({'modify_data': query,}))
HTML은 다음과 같이 보일 것입니다.
<form method="POST" action="." enctype="multipart/form-data">
Title: <input type="text" name="title" value="{{modify_data.field1}}"/>
Text: <input type="text" name="txt" value="{{modify_data.field2}}"/>
<input type="submit"/>
</form>