【发布时间】:2021-02-25 12:40:21
【问题描述】:
前段时间我开始学习python编程,我决定尝试使用flask和mysql制作小型合同管理工具。我经历了第一部分来管理客户、卖家和合同,但现在我开始研究更多的数字内容。我可以轻松地处理数据库中的单个记录(其中 1 条记录是例如客户详细信息),但现在我需要找到一种方法来编辑多行中的 1 个值(列)。
我有一个数据库,其中 delivery_period_start 和 delivery_period_end 仅代表月份(它可能会更改为单个 2021-01-00 语句,因为我只需要每月值)。我需要处理的专栏是每个月不同的能源消耗(profile_mw)。我需要有一个表单(使用 wtforms),可用于编辑一个客户所有月份的所有值(每个客户数据将存储在单独的表中)。
过去三天我一直在寻找解决方案,但由于卡住了,我决定向您寻求帮助。
我尝试在flask中执行的代码是:
@app.route(site)
def profile_list():
tablename = "customer"
cur = mysql.connection.cursor()
profile = cur.execute("SELECT * FROM " + tablename)
profile_list = cur.fetchall()
form = ProfileForm(request.form)
for d in profile_list:
form.profile.data = d['profile_mw']
return render_template('site.html', profile_list=profile_list, form=form)
然后我创建了简单的 jinja2 代码尝试填充数据(我跳过了一些以前的代码,例如 formhelpers 或 div 表):
{% for profile in profile_list %}
<tr>
<td>{{profile.delivery_period_start}} - {{profile.delivery_period_end}}</td>
<td>{{ render_field(form.profile, class_="form-control") }}</td>
</tr>
{% endfor %}
我得到的结果是一个具有正确行数和字符串字段数的表(db 中的 12 条记录 = 12 行 = 12 个字段),正确的起始交货日期,但我在所有字段中得到的值只是最后一个值表(表中最后一行的第 12 个 profile_mw 值)。
能否请您帮助我在表单中获取正确的值(以便我可以分别获得 1-12 个月的正确 profile_mw 值),然后我如何将编辑后的值发送到数据库?
提前感谢您的支持。
【问题讨论】:
-
´...但是我在所有字段中得到的值只是表中的最后一个值..´ 你得到了 12 倍相同的值并不让我感到惊讶,你正在打印相同的变量(form.profile)。表格里有什么?
-
您好@MennoHölscher,感谢您对此进行调查。表格很简单:
class ProfileForm(Form): profile = StringField('')我应该简单地创建一个大表格(年数 * 12 个字段)吗?如果是的话(我可以很容易地解决这个问题)我如何使用这个大表单来一次编辑所有值?对于单行编辑,我使用“id”索引寻址。如何对多行执行此操作?