У меня есть форма для редактирования объекта, созданного другой формой, форма редактирования не может обновить изображение до нового изображения и будет отображать старые изображения.
при печати form.image.data , он пуст, хотя я загружаю файл изображения.
init .py
def edit_item(itemid):
context = {"message": ""}
item = itemcontroller.get_item_by_UID(itemid)
if(not item):
abort(404)
form = edit_sales_item(formdata=request.form, obj=item)
if request.method == 'POST' and form.validate():
f = form.image.data
print(f)
print(os.path.exists(PACKAGEDIR + form.UID.data))
if(f):
os.remove(ITEMSDIR + form.UID.data)
f.save(ITEMSDIR + form.UID.data)
update_form = form.data.copy()
update_form["image_url"] = ITEMSDIR + form.UID.data
item2 = itemcontroller.create_and_save_item(update_form)
if (item2):
context ={"message":"You have created a new item"}
itemcontroller.remove_sales_item(item)
flash("You have updated the item "+ item.get_UID() +" information")
return redirect(url_for("admin_pages.list_sales_items"))
else:
context ={"error":"A error have occured..."}
return render_template('admin/editing/edit_items.html', form=form, message=context, item=item)
forms.py
class edit_sales_item(FlaskForm):
UID = StringField("Unique ID:", validators=[validators.Length(min=3, max=10),DataRequired()])
name = StringField("Name: ", validators=[validators.Length(min=3, max=200) ,DataRequired()])
description = TextAreaField("Description: ", validators=[validators.Length(min=5, max=3000) ,DataRequired()])
price = DecimalField("Price: ", validators=[DataRequired()])# Regexp(
image = FileField("Image of product: ", validators=[FileAllowed(images ,'Image only!')])
stocks = IntegerField("Stocks amount: ", validators=[validators.NumberRange(min=1),DataRequired()])
submit = SubmitField()
the Шаблоны просто покажут форму.