我正在使用Flask开展一个项目。我有一个路线和功能,用于创建一个餐厅并将其保存在我的记录
问题是表单只保存了一部分,其余的信息没有被添加和提交。
使用表单,用户提交以下信息: 餐厅餐桌: 名称 restaurants_info表: food_type avg_price 市 状态
实际保存的唯一内容是查看实际数据库后的名称。我想知道为什么只有第一个添加和提交被保存在表中,其余的没有保存在第二个表中
这是烧瓶路线代码:
@app.route('/addrestaurant', methods=['GET', 'POST'])
def CreateRestaurant():
if request.method == 'POST':
newRestaurant = Restaurants(name = request.form['name'])
session.add(newRestaurant)
session.commit()
newRestaurantInfo = Restaurants_Info(food_type = request.form['food_type'],
avg_price = request.form['avg_price'],
city = request.form['city'],
state = request.form['state'])
session.add(newRestaurantInfo)
session.commit
flash('%s was successfully created' % newRestaurant.name)
return redirect(url_for('DisplayRestaurant'))
else:
return render_template('addRestaurant.html')
这里是相应的html文档
<html>
<head>
</head>
<body>
<h1>Create a new restaurant</h1>
<h2>Please fill out the entire form</h2>
<form action="{{url_for('CreateRestaurant')}}" method="POST">
<table>
<tr>
<td>Name</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>Food Type</td>
<td><input type="text" name="food_type"></td>
</tr>
<tr>
<td>Prices</td>
<td><input type="text" name="avg_price"></td>
</tr>
<tr>
<td>City</td>
<td><input type="text" name="city"></td>
</tr>
<tr>
<td>State</td>
<td><input type="text" name="state"></td>
</tr>
<tr>
<td><input type="submit" name="Submit"></td>
</tr>
</table>
</form>
</body>
</html>
我只想将名称保存在一个表中,其余的在第二个表中保存,稍后将在其中调用
答案 0 :(得分:1)
您实际上并未第二次致电commit
。需要使用parens调用Python中的函数:session.commit()
。
请注意,不需要再调用两次;你应该在第二个add
之后这样做一次。