2009-09-25 2 views
1

home/models.py에 Mytable이라는 테이블이 있고 django aep을 사용합니다 참조는 Mytable.all()과 같습니다.appengine KindError django 외부의 테이블에 액세스 할 때

이 애플리케이션 제목을 내 일부 URL에 나는 이러한 요청을 처리하는 별도의 핸들러 이, home_mytable

이제

로 데이터 뷰어에 나타납니다. (사실 google 웨이브 로봇 핸들러입니다.) 내가 db.GqlQuery를 호출하여이를 home_mytable 테이블을 참조 할이 핸들러 내에서

그러나 이상한 일이 발생 ("home_mytable SELECT * FROM"). 가끔 내가 그게 내가 장고 핸들러에서이 테이블을 참조하는 URL 을 불러 직후에 발생 의심, 단지 잘 작동, 내가 산발적하지만이받을 종류 home_mytable

에 대한 KindError 에게 어떤 구현을받을 수 없습니다.

내 질문에 내가 a)이 오류가 프로그래밍 할이

답변

2

앱 엔진 패치 monkeypatches 가능한 '종류'내가 시도 할 수 있도록 무엇인지 확인하고 디버그) 발생 B 나던 것을 보장 할 수있는 방법입니다 귀하의 모델에 다른 종류의 이름이 있어야합니다. 왜 나 한테 묻지 마라.하지만 그것이하는 일이다. 일을 해결하려면 다음과 같이하십시오 그들은 항상 '고정'종류의 이름을 확인하기 위해 모델의 종류() 클래스 메서드를 재정의해야합니다

class MyTable(db.Model): 
    @classmethod 
    def kind(cls): 
    return "home_mytable" 
+0

글쎄, 그것은 문제가 해결되지 않았다. 참고 : db.GqlQuery ("SELECT * from home_mytable") 호출에서 MyTable 호출을 가져 오지 마십시오 (bz는 모든 장고 등을 가져옵니다). 간단히 db를 가져 와서 전화를 걸면됩니다. 이보기를 알몸으로 호출하면 KindError가 발생합니다. 이 모델을 참조하는 django 뷰에 대한 호출이 먼저 만들어지고이 뷰에 대한 호출이 작동하는 것 같습니다. 모든 아이디어 ?? – molicule

+0

BTW : 현재 해결 방법은 try : db.GqlQuery except : urlfetch를 수행하는 것입니다. urlfetch 할당량을 실행하는 것 외에도 느려집니다. – molicule

+0

좋아, 그럼 그 모델은 뷰에 의해 메모리에로드 된 한 다른 뷰에서 home_mytable을 찾을 수있다. 그러나 활동이없고 메모리가 해제되면 home_mytable에 대한 알몸 호출은 작동하지 않습니다. 해결 방법은 다음 주석에 있습니다. – molicule