gpt4 book ai didi

python - 使用 WTForms 表单数据更新模型

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:41 24 4
gpt4 key购买 nike

我有一些 Flask-SQLAlchemy 模型和用 wtforms_alchemy 生成的 Flask-WTF 表单来表示它们。我在每个模型上实现了一种方法,以根据表单数据更新其属性。对于每个新模型和字段,我都必须更新这些方法,这很烦人。有没有办法让它更自动化,或者我正在使用的库中缺少我缺少的功能?

def edit_car(car_id):
form = CarForm(request.form)
if form.is_valid():
car = Car.query.get_or_404(car_id)
car.from_form(form) # Update car fields
...
# save car in database ...

class Car(db.Model):
color = db.Column(db.String(10))
...

def from_form(self, form):
self.color = form.color.data
... # all other fields

最佳答案

使用表单的 populate_obj填充模型的方法。它设置了一个与每个字段同名的属性。

form.populate_obj(car)
db.session.commit()

如果简单的“按字段名称设置属性”行为不适合给定的模型/表单对(尽管它应该适合您的情况),您可以覆盖该方法。

class SpecialCarForm(FlaskForm):
...

def populate_obj(obj):
# mess with data, set extra fields, etc.
# potentially call super after
super().populate_obj(obj)

关于python - 使用 WTForms 表单数据更新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46609908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com