我正在使用 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')