使用关系 table 中的数据填充表单
Populate form with data from relation table
我想用关系数据填充表单。例如,如果我这样做
form = CreateCompany(obj=company)
这只会使用直接来自主 table 的数据填充表单,而不是来自关系 table.
的数据
class Company(db.Model):
__tablename__ = 'companies_company'
id = db.Column(db.Integer, primary_key=True)
company_name = db.Column(db.String(100))
industry_id = db.Column(db.Integer, db.ForeignKey('industries.id'))
class Industry(db.Model):
__tablename__ = 'industries'
id = db.Column(db.Integer, primary_key=True)
industry = db.Column(db.String(100))
company_industry = db.relationship('Company', backref='company_industry', lazy='joined')
形式
class CreateCompany(Form):
company_name = StringField('Company name', [Required()])
industry = SelectField('Industry')
industry_id = HiddenField('Industry_id')
对此有什么想法吗?
基本上我需要在公司和行业之间建立关系。
模型中的类似内容:industry_rel = db.relationship('Industry', backref='company')
然后,我可以在 CreateCompany
的表单构造函数中执行此操作。
def __init__(self, default, *args, **kwargs):
self.industry.kwargs['default'] = default #default is company.industry_rel.id
form = CreateCompany(company.industry_rel.id, obj=company)
在这种情况下,我只是手动填充无法使用 obj=company
自动填充的内容
我想用关系数据填充表单。例如,如果我这样做
form = CreateCompany(obj=company)
这只会使用直接来自主 table 的数据填充表单,而不是来自关系 table.
的数据class Company(db.Model):
__tablename__ = 'companies_company'
id = db.Column(db.Integer, primary_key=True)
company_name = db.Column(db.String(100))
industry_id = db.Column(db.Integer, db.ForeignKey('industries.id'))
class Industry(db.Model):
__tablename__ = 'industries'
id = db.Column(db.Integer, primary_key=True)
industry = db.Column(db.String(100))
company_industry = db.relationship('Company', backref='company_industry', lazy='joined')
形式
class CreateCompany(Form):
company_name = StringField('Company name', [Required()])
industry = SelectField('Industry')
industry_id = HiddenField('Industry_id')
对此有什么想法吗?
基本上我需要在公司和行业之间建立关系。
模型中的类似内容:industry_rel = db.relationship('Industry', backref='company')
然后,我可以在 CreateCompany
的表单构造函数中执行此操作。
def __init__(self, default, *args, **kwargs):
self.industry.kwargs['default'] = default #default is company.industry_rel.id
form = CreateCompany(company.industry_rel.id, obj=company)
在这种情况下,我只是手动填充无法使用 obj=company