1

我正在使用 Flask 和 Peewee 为Usersand创建模型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。我该如何解决这个问题?

4

3 回答 3

1

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

您还应该将 设置为related_name对相关模型有意义的内容。user.appointments对于访问 aUser的 s来说,这可能是一个Appointment比. 更好的名称user.doctor

class User(Model):
   pass

class Appointment(Model):
   with_doctor = ForeignKeyField(User, related_name='appointments')
于 2016-06-28T11:23:00.507 回答
0

尝试像这样进行一些更改,例如 Names & Addresses :

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中定义

于 2016-06-28T07:29:48.253 回答
0

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

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

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

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

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

于 2016-06-28T07:08:00.160 回答