2015-03-25 4 views
0

Я хочу заполнить форму реляционными данными. Например, если я делаюЗаполнить форму данными из таблицы отношений

form = CreateCompany(obj=company) 

Это заполняет форму только данными непосредственно из основного стола, а не из таблицы отношений.

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') 

Любая идея по этому поводу?

+0

Как '' company' и Industry' связаны? – dirn

+0

Компания может иметь только одну отрасль, и одна отрасль может использоваться несколькими компаниями. В принципе отношения «много-к-одному». – user2990084

+0

Ваши модели не отражают это. Вы разделили полные модели или только ограниченное количество полей? – dirn

ответ

0

В принципе, мне нужно создать связь между Компанией и промышленностью.

Нечто подобное в модели: 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