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回まで
  • 登録:
  • 終了:2010/10/02 12:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Lhankor_Mhy No.1

回答回数814ベストアンサー獲得回数232

ポイント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
    ||<

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

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

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

回答リクエストを送信したユーザーはいません