如何为QuerySelectMultipleField中选择的每个选择添加额外的字段

时间:2020-02-17 23:41:02

标签: flask flask-sqlalchemy flask-wtforms wtforms

我正在使用 Flask WTForms SQLALchemy 进行项目。

在我的模型中,我有一个包含材料的公式,许多材料包含在许多公式中,许多公式包含许多材料,并且公式中的每种材料都具有特定的比率属性来表示这一点,我使用了SQLALchemy的关联对象。

我想创建一个表格,让其创建一个公式来选择所需的物料,并为每种物料分配一个比例。我知道使用QuerySelectMultipleField将材料链接到公式是一种选择,但是我不知道如何制作表格让用户为所选的每种材料分配比例。

我的 models.py

class Ingredient(db.Model):
    materia_id = db.Column(db.String(15), db.ForeignKey('materia.id'), primary_key=True)
    formula_id = db.Column(db.Integer, db.ForeignKey('formula.id'), primary_key=True)
    ratio = db.Column(db.Decimal, nullable=False)
    materia = db.relationship('Materia', back_populates='formulas', passive_deletes='all')
    formula = db.relationship('Formula', back_populates='materias', passive_deletes='all')

class Formula(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    reactive_id = db.Column(db.String(15), db.ForeignKey('reactive.id'))
    reactive = db.relationship('Reactive', back_populates='formula')
    materias = db.relationship('Ingredient', back_populates='formula')

    def __repr__(self):
        return f"Formula('{self.id}')"

class Materia(db.Model):
    id = db.Column(db.String(15), primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    brand = db.Column(db.String(30), nullable=False)
    measure = db.Column(db.Enum(Medida), nullable=False)
    amount = db.Column(db.Decimal, nullable=False, default=0)
    type = db.Column(db.String(20), nullable=False, default='Materia')
    formulas = db.relationship('Ingredient', back_populates='materia')

    def __repr__(self):
        return f"Materia Prima('{self.name}', '{self.brand}', '{self.measure}')"

def materia_query():
    return Materia.query.all()

我的 forms.py

class NewFormula(FlaskForm):
    materia = QuerySelectMultipleField('Choose Materias',query_factory=materia_query, get_label='id')
    submit = SubmitField('Enter')

0 个答案:

没有答案