我有一个使用SQLAlechemy的烧瓶应用程序的Flask-Admin界面,我似乎无法弄清楚如何处理外键。具体来说,我有以下两种模式:
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的下拉列表,而不仅仅是这样的整数输入:
我在模型上有__unicode__
个函数(我使用python 2.7)。我尝试在自定义表单视图中修改form_ajax_refs但没有成功。任何帮助将不胜感激!
答案 0 :(得分:7)
在数据模型的定义中实施__repr__
。
class DoctorType(db.Model):
#...
def __repr__(self):
return self. doctor_type_english_name
答案 1 :(得分:0)
事实证明我缺少的是从Doctor类到DoctorType类的关系。我在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
一旦我补充说,"医生"在flask-admin中编辑和创建表单有一个名为Doctor Type的新字段,它是DoctorType.doctor_type_english_name值的下拉列表,默认情况下医生类型ID字段已消失。这是我想要的行为。