2013-02-24 2 views
1

아래 코드를 사용하여 행의 모든 ​​값을 가져옵니다.행의 모든 ​​필드 값 가져 오기

from google.appengine.ext import db 
from python_lib.models import Field 

field = Field.all()[0] 
names = Field.properties() 

for key in names: 
    print field.get(key) 

그러나 다음과 같은 오류를 제공

BadKeyError: Invalid string key name. 
+1

아마도''names''와''field.keys()''를 인쇄 해 보았습니까? 아마도 오류가 유효하기 때문입니다. – sotapme

+0

@sotapme 이름이 올바르게 인쇄됩니다. Get – Saqib

답변

2

당신이 코드에서 API를 너무 다른 혼동된다. 이 방법 https://developers.google.com/appengine/docs/python/datastore/modelclass#Model_get의 문서를 참조 -

for key in names: 
    print field.get(key) 

귀하의 get() 호출은 실제로 데이터 저장소에서 엔티티를 가져 클래스의 메소드를 호출하려고로, 유효하지 않습니다.

은 (개체)이

for key in names: 
    print getattr(field,key) 

이나 모두 같은 getattr

교대 반환되는 속성 객체의 get_value_for_datastore(model_instance)을 사용하여 사용해야 필드의 인스턴스 이름의 속성을 얻으려면 properties() 호출은 속성의 이름과 함께 호출합니다.

0

이 당신이 원하는 무엇인가?

코드 :

from google.appengine.ext import db 

class Field(db.Model): 
    author = db.StringProperty() 
    content = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 

a = Field(author="me") 
a.put() 

편집 :

field = Field.all() 
for f in field: 
    print f.author 
    print f.content 


props = Field.properties() 

print props 
for vals in props: 
    print vals 

출력 :

<__main__.Field object at 0xb8c9e4c> 
{'content': <google.appengine.ext.db.StringProperty object at 0xb7c0aec>, 'date':  <google.appengine.ext.db.DateTimeProperty object at 0xb7c06cc>, 'author':  <google.appengine.ext.db.StringProperty object at 0xb7c0f6c>} 
content 
date 
author 
+0

을 사용하여 필드 값을 인쇄 할 때 문제가 발생합니다. 이름 만 인쇄됩니다. 필드 객체에서 값을 가져 오려고합니다. – Saqib

+0

속성은 필드 이름입니다. 값은 쿼리의 값입니다. ndb https://developers.google.com/appengine/docs/python/ndb/도 살펴보십시오. –

관련 문제