如何使HTML中的选项标签显示一列的行,但保存同一表中另一列的值

问题描述 投票:0回答:1

我正在尝试使用flask / python-anywhere创建一个卡路里计数器应用程序,其中一部分是制作下拉菜单供您选择。我希望用户能够看到食物名称,但是当他们提交食物时,我想将食物的calories添加到数据库中。

这是相关表的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 -->

为了澄清,我已经在“食物”表中添加了食物,但是我希望用户选择的食物在我的“帖子”表中另存为“卡路里”。在此先感谢:)

html forms flask-sqlalchemy html-select pythonanywhere
1个回答
0
投票
<option value = "{{ food.food_name }}" selected>{{ food.food_name }}</option>
© www.soinside.com 2019 - 2024. All rights reserved.