我使用Flask和Peewee为Users
和Appointments
创建模型,每个模型都有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 :(得分: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()