如何使 HTML 中的选项标签显示一列的行,但从同一 table 中保存另一列的值
How to make option tag in HTML display rows of one column but save values of another from the same table
我正在尝试使用 flask/python-anywhere 制作一个卡路里计数器应用程序,其中一部分是制作一个可供选择的食物下拉菜单。我希望用户能够看到食物名称,但是当他们提交食物时,我想将食物的 卡路里 添加到数据库中。
这是相关 table 的 python 代码:
class Post(db.Model):
__tablename__ = "posts"
id = db.Column(db.Integer, primary_key=True)
calories = db.Column(db.Integer)
timestamp = db.Column(db.DateTime, index=True, default=datetime.now)
consumer_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True)
consumer = db.relationship('User', foreign_keys=consumer_id)
class Food(db.Model):
__tablename__ = "foods"
id = db.Column(db.Integer, primary_key=True)
food_name = db.Column(db.String(200))
food_cal = db.Column(db.Integer)
这是页面的 python 代码:
@app.route("/", methods=["GET", "POST"])
@login_required
def index():
if request.method == "GET":
return render_template("main_page.html", foods=Food.query.all(), posts=Post.query.all(), timestamp=datetime.now())
if not current_user.is_authenticated:
return redirect(url_for('index'))
add_food = Post(calories=request.form["calories"], consumer=current_user)
db.session.add(add_food)
db.session.commit()
return redirect(url_for('index'))
这是我的 html 代码:
<div class="container">
{% for post in posts %}
<div class="row" style="margin-bottom: 1ex">
<div>
You added {{ post.calories }} calories
</div>
<div>
<small>
at
{% if post.timestamp %}
{{ post.timestamp.strftime("%A, %d %B %Y at %H:%M") }}
{% else %}
at an unknown time
{% endif %}
</small>
</div>
</div>
{% endfor %}
{% if current_user.is_authenticated %}
<div class="row">
<form action="." method="POST">
<div class="form-group">
<label for="foods">Food:</label>
<select class="form control" name="food_name">
{% for food in foods %}
<option value = "{{ food.food_name }}" selected>{{ food.food_name }}</option>
{% endfor %}
</select>
<input type="submit" class="btn btn-success" value="Add calories">
</div>
</form>
</div>
{% endif %}
</div><!-- /.container -->
澄清一下,食物 table 中的食物已添加到我这边,但我希望将用户 select 中的食物保存为 'calories' 在我的 Post table。提前致谢:)
<option value = "{{ food.food_name }}" selected>{{ food.food_name }}</option>
应该是
<option value = {{ food.food_cal }} selected>{{ food.food_name }}</option>
我正在尝试使用 flask/python-anywhere 制作一个卡路里计数器应用程序,其中一部分是制作一个可供选择的食物下拉菜单。我希望用户能够看到食物名称,但是当他们提交食物时,我想将食物的 卡路里 添加到数据库中。
这是相关 table 的 python 代码:
class Post(db.Model):
__tablename__ = "posts"
id = db.Column(db.Integer, primary_key=True)
calories = db.Column(db.Integer)
timestamp = db.Column(db.DateTime, index=True, default=datetime.now)
consumer_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True)
consumer = db.relationship('User', foreign_keys=consumer_id)
class Food(db.Model):
__tablename__ = "foods"
id = db.Column(db.Integer, primary_key=True)
food_name = db.Column(db.String(200))
food_cal = db.Column(db.Integer)
这是页面的 python 代码:
@app.route("/", methods=["GET", "POST"])
@login_required
def index():
if request.method == "GET":
return render_template("main_page.html", foods=Food.query.all(), posts=Post.query.all(), timestamp=datetime.now())
if not current_user.is_authenticated:
return redirect(url_for('index'))
add_food = Post(calories=request.form["calories"], consumer=current_user)
db.session.add(add_food)
db.session.commit()
return redirect(url_for('index'))
这是我的 html 代码:
<div class="container">
{% for post in posts %}
<div class="row" style="margin-bottom: 1ex">
<div>
You added {{ post.calories }} calories
</div>
<div>
<small>
at
{% if post.timestamp %}
{{ post.timestamp.strftime("%A, %d %B %Y at %H:%M") }}
{% else %}
at an unknown time
{% endif %}
</small>
</div>
</div>
{% endfor %}
{% if current_user.is_authenticated %}
<div class="row">
<form action="." method="POST">
<div class="form-group">
<label for="foods">Food:</label>
<select class="form control" name="food_name">
{% for food in foods %}
<option value = "{{ food.food_name }}" selected>{{ food.food_name }}</option>
{% endfor %}
</select>
<input type="submit" class="btn btn-success" value="Add calories">
</div>
</form>
</div>
{% endif %}
</div><!-- /.container -->
澄清一下,食物 table 中的食物已添加到我这边,但我希望将用户 select 中的食物保存为 'calories' 在我的 Post table。提前致谢:)
<option value = "{{ food.food_name }}" selected>{{ food.food_name }}</option>
应该是
<option value = {{ food.food_cal }} selected>{{ food.food_name }}</option>