문제

누구든지 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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top