flask-admin:如何在编辑和创建表单时显示有意义的外键信息?

flask-admin: How to display meaningful foreign key info in edit and create forms?

我有一个使用 SQLAlechemy 的烧瓶应用程序的烧瓶管理界面,但我似乎无法弄清楚如何处理外键。具体来说,我有以下两个模型:

class DoctorType(db.Model):
    __tablename__ = 'doctor_type'
    id = db.Column(db.Integer, primary_key=True)
    doctor_type_english_name = db.Column(db.Unicode(255))
    doctors = db.relationship('Doctor')

    def __unicode__(self):
        return self.doctor_type_english_name

class Doctor(db.Model):
    __tablename__ = 'doctor'
    id = db.Column(db.Integer, primary_key=True)
    doctor_english_name = db.Column(db.Unicode(255))
    doctor_type_id = db.Column(db.Integer, db.ForeignKey('doctor_type.id'))

    def __unicode__(self):
        return self.doctor_english_name

我希望 flask-admin 的创建或编辑表单中的 doctor_type_id 字段是 doctor_type_english_name 的下拉列表,而不仅仅是像这样的整数输入:

Doctor Type Input Field

我在模型上有 __unicode__ 功能(我使用的是 python 2.7)。我尝试在我的自定义表单视图中修改 form_ajax_refs 但没有成功。任何帮助将不胜感激!

在数据模型的定义中实现 __repr__

class DoctorType(db.Model):
    #...
    def __repr__(self):
        return self. doctor_type_english_name

事实证明,我缺少的是从 Doctor class 到 DoctorType class 的关系。我在 DoctorType.doctors 关系中使用 backref 实现了这个:

class DoctorType(db.Model):
    __tablename__ = 'doctor_type'
    id = db.Column(db.Integer, primary_key=True)
    doctor_type_english_name = db.Column(db.Unicode(255))
    doctors = db.relationship('Doctor', backref='doctor_type')

    def __unicode__(self):
        return self.doctor_type_english_name

添加后,"Doctor" 在 flask-admin 中编辑和创建表单有一个名为 Doctor Type 的新字段,它是 DoctorType.doctor_type_english_name 值的下拉列表,以及 Doctor Type ID 字段默认情况下消失了。这就是我想要的行为。