2010-01-19 3 views
3

파이썬 GAE에서 XXXX 속성은 다중 행 예외가 아닙니다.

profilename = db.StringProperty() 

간단한 모델 개체가 있고 "Some More"문자열을 가져 와서

넣기

모델 에서 예외

이 throw됩니다.

속성 profilename이 다중 행이 아닙니다.

공백이 뉴 라인과 같습니까? 공백없이 단일 단어 문자열의 경우

put ting

입니다.

+0

"Some More"문자열이 실제로 "Some More \ n"일 가능성이 있습니까? 개행 문자를 볼 수 없지만 여전히있을 수 있습니다. –

+0

아니 그것은 새로운 라인을 가지고 있지 않으며 더 큰 문자열에서 실제로 추출 되었기 때문에 – dhaval

답변

4

의 구체적 StringProperty.validate에서, 응용 프로그램 수준에서 수행되는 체크 - (당신이 내선/DB/초기화 평에 SDK의 소스에서 찾을 수 있습니다) 문제의 코드입니다 :

if not self.multiline and value and value.find('\n') != -1: 
    raise BadValueError('Property %s is not multi-line' % self.name) 
\n 참으로 당신이 전달하고있는 value에 영향을 발견하지 않는 한

은 그래서 트리거 할 수있는 방법은 없습니다. 사용, 당신은 문제를 디버깅하기 위해

logging.info('value is: %r', value) 
,

당신에게 문제가되는 put 직전 - 결과로 로그에 무엇이 보이나요? %r 형식 지정자는 문자열의 repr을 보여주기 때문에, 거기에 없어야 할 성가신 \n의 위치를 ​​관찰 할 수 있으며 해당 정보에서 문제를 디버그 할 수 있습니다.

+0

을 통해 오는 새 라인의 가능성은 희박합니다. stringproperty 속성 multiline = true를 변경하면 그것은 불평하지 않습니다. 입력 비록 Thx, 다시 확인하고 볼 것입니다. – dhaval

+2

@dhaval 물론 다중 라인 문자열 속성에 대한 줄 바꿈에 대해서는 불평하지 않을 것입니다. 다중 줄이 무엇인지는 _about_ ;-)입니다. –