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 字段默认情况下消失了。这就是我想要的行为。
我有一个使用 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 字段默认情况下消失了。这就是我想要的行为。