google app engineに関する質問です。

下記のコードが通るようになる方法を教えてください。
下記のコードでは以下のエラーがでます。
NameError: name 'Student' is not defined
すべてのコードを読み込んだあとに実行するような方法があれば実現できそうなのですが、よくわかりません。
from google.appengine.ext import db

class Teacher(db.Model):
student = db.ReferenceProperty(reference_class=Student)

class Student(db.Model):
teacher = db.ReferenceProperty(reference_class=Teacher)

当方初級レベルです。よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/09/25 12:45:14
  • 終了:2010/10/02 12:50:03

ベストアンサー

id:Lhankor_Mhy No.1

Lhankor_Mhy回答回数779ベストアンサー獲得回数2312010/09/25 14:34:31

ポイント60pt

 エラーを回避して参照を実現すればよいのでしょうか。

 ポリモーフィックモデルを使用してみました。

from google.appengine.ext import db
from google.appengine.ext.db import polymodel

class Person(polymodel.PolyModel):
  name = db.StringProperty()

class Teacher(Person):
  student = db.ReferenceProperty(reference_class=Person)

class Student(Person):
  teacher = db.ReferenceProperty(reference_class=Person)

class MainHandler(webapp.RequestHandler):
  def get(self):
    student = Student(name ='Aaron')
    student.put()
    teacher = Teacher(name ='Sabrina', student =student.key())
    teacher.put()
    student.teacher =teacher.key()
    student.put()
    self.response.out.write('%s is %s\'s teacher. %s is %s\'s student.' % (student.teacher.name, student.name, teacher.student.name, teacher.name))
#Sabrina is Aaron's teacher. Aaron is Sabrina's student.
  • id:Lhankor_Mhy
    すみません、これでできました。
    ただ、属性に直接触っていますので、何か問題が起きるかもしれないです。

    >||
    from google.appengine.ext import db

    class Teacher(db.Model):
    name = db.StringProperty()
    student = db.ReferenceProperty()

    class Student(db.Model):
    name = db.StringProperty()
    teacher = db.ReferenceProperty(reference_class=Teacher)

    Teacher.student.reference_class = Teacher.student.data_type = Student
    ||<

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません