Flask记录信息不能保存所有内容

时间:2016-10-20 09:18:31

标签: python flask flask-sqlalchemy

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

我只想将名称保存在一个表中,其余的在第二个表中保存,稍后将在其中调用

1 个答案:

答案 0 :(得分:1)

您实际上并未第二次致电commit。需要使用parens调用Python中的函数:session.commit()

请注意,不需要再调用两次;你应该在第二个add之后这样做一次。