2016-06-28 72 views
0

我正在使用Flask和Peewee爲UsersAppointments創建模型,並且它們中的每個模型都有一個引用對方的ForeignKeyField。問題是,如果我定義一個在另一個之上,Flask將給我x is not defined模型未定義

例如:

class User(Model): 
    appointments = ForeignKeyField(Appointment, related_name='appointments') 

class Appointment(Model): 
    with_doctor = ForeignKeyField(User, related_name='doctor') 

這將返回'User' is not defined。我怎樣才能解決這個問題?

回答

0

可據我知道它定義爲一個字符串:

class User(Model): 
    appointments = ForeignKeyField("Appointment", related_name='appointments') 

class Appointment(Model): 
    with_doctor = ForeignKeyField(User, related_name='doctor') 

如果聲明的創建之前,你必須把它寫成一個字符串的選項。

我不確定,我認爲綁定是在運行時。

+0

如果我這樣做,我得到TypeError:issubclass()arg 1必須是一個類。 – josh

0

嘗試一些改變這樣的,對於名稱的例子&地址:

class Person(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    addresses = db.relationship('Address', backref='person', lazy='dynamic') 

class Address(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    person_id = db.Column(db.Integer, db.ForeignKey('person.id')) 

據我所知,你應該使用db.ForeignKey()像這樣的關係...... ForeignKeyField()在Django定義

+0

這看起來像SQLAlchemy,而不是Peewee。 – dirn

1

您通常不會在關係的兩側定義外鍵,特別是當關系不是一對一時。

您還應該將related_name設置爲對相關模型有意義的內容。 user.appointments對於訪問UserAppointment可能是比user.doctor更好的名稱。

class User(Model): 
    pass 

class Appointment(Model): 
    with_doctor = ForeignKeyField(User, related_name='appointments')