下記のコードが通るようになる方法を教えてください。
下記のコードでは以下のエラーがでます。
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)
当方初級レベルです。よろしくお願い致します。
エラーを回避して参照を実現すればよいのでしょうか。
ポリモーフィックモデルを使用してみました。
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.
コメント(1件)
ただ、属性に直接触っていますので、何か問題が起きるかもしれないです。
>||
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
||<