Flask报错TypeError: 'estates'不是Estate的有效关键字参数如何解决
问题解决
错误根源
- 实例化
Estate模型时传入了模型不存在的关键字参数:estates是Type模型反向引用Estate的属性,不属于Estate本身的字段,Estate关联类型的字段是外键type_id和关系属性estat_type- 额外传入了
author参数,Estate模型未定义该字段,仅通过user_id关联用户表 - 表单类型选择字段名为
type,取值应为form.type.data,不是不存在的form.estate_type.data Estate模型要求image_file_five非空,但当前代码仅处理了4张图片的存储,未给该字段赋值会触发后续报错
修复方案
1. 修正routes.py中Estate实例化的参数
将原来的Estate实例化代码替换为如下内容:
estate = Estate( title=form.title.data, quarter=form.quarter.data, street=form.street.data, price=form.price.data, bathroom=form.bathroom.data, bedroom=form.bedroom.data, livingroom=form.livingroom.data, kitchen=form.kitchen.data, type_id=form.type.data, # 直接给外键赋值表单提交的类型ID user_id=current_user.id, description=form.description.data, image_file_one=image_file_one, image_file_two=image_file_two, image_file_three=image_file_three, image_file_four=image_file_four, # 补全第五张图片的存储逻辑后添加以下行,或者修改模型中image_file_five的nullable为True # image_file_five=image_file_five )
2. 补全第五张图片的处理逻辑(可选)
如果第五张图为必填项,需要补充对应存储代码:
image_file_five = files.save(request.files.get('image_file_five'), name=secrets.token_hex(10) + ".")
然后在Estate实例化参数中添加image_file_five=image_file_five即可。
内容的提问来源于stack exchange,提问作者Lamare Souley
相关产品推荐
相关产品推荐

