模型未定义

时间:2016-06-28 07:05:20

标签: python flask peewee flask-peewee

我使用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。我怎么能解决这个问题?

3 个答案:

答案 0 :(得分:1)

您通常不会在关系的两边定义外键,尤其是当这种关系不是一对一的时候。

您还应该将related_name设置为相关模型上有意义的内容。 user.appointments可能是访问User Appointment而非user.doctor的更好名称。

class User(Model):
   pass

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

答案 1 :(得分:0)

据我所知,您可以将其定义为字符串:

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

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

如果声明在创建之前,您可以选择将其写为字符串。

我不确定,我认为绑定是在运行时。

答案 2 :(得分:0)

尝试这样的一些更改,Names& amp;地址:

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()来表达这样的关系......在{django中定义的ForeignKeyField()