Django 里面怎么实现表格输入汇总计算功能

MYSQL读取的列表,最后一列为用户输入数据,想根据输入数量(办理量)*单项总酬金,算出整个表的酬金。

HTML里面和 views里面函数该如何写?

 

参考GPT和自己的思路:

对于这个问题,可以在 Django 的 views.py 文件中编写一个函数来实现表格输入汇总计算功能。具体方法如下:

  1. 从数据库中读取数据,并将其传递给模板

可以使用 Django 的模型来从 MySQL 数据库中读取数据。在 views.py 文件中,首先要导入相关的模型,然后使用模型的.objects.all()方法来获取所有数据。最后将数据传递给模板。

  1. 在模板中编写表格并添加输入框

使用 HTML 和 Django 模板语言 (Django Template Language)编写表格,最后一列为用户输入的数据,可以使用 HTML 中的 input 标签来添加输入框。

  1. 写一个处理表格数据的函数

在 views.py 文件中,写一个函数来处理表格数据。该函数可以通过 POST 请求获取表格中的数据,进行计算,最后返回结果。可以使用 Django 的 request.POST 方法来获取表单数据。在函数中,使用数据计算酬金并返回结果。

  1. 在模板中显示结果

在模板中,可以使用 Django 模板语言来显示计算结果。

下面是一个例子:

views.py

from django.shortcuts import render
from .models import MyModel

def calculate(request):
    # 获取所有数据
    data = MyModel.objects.all()

    # 处理 POST 请求
    if request.method == 'POST':
        # 获取表格数据
        input_data = request.POST.getlist('input_data')

        # 计算酬金
        total = 0
        for i in range(len(data)):
            total += int(input_data[i]) * data[i].price

        # 返回结果
        return render(request, 'result.html', {'total': total})

    # 传递数据到模板中
    return render(request, 'table.html', {'data': data})

table.html

<form method="post">
<table>
  <thead>
    <tr>
      <th>项目</th>
      <th>单价</th>
      <th>办理量</th>
    </tr>
  </thead>
  <tbody>
    {% csrf_token %}
    {% for item in data %}
      <tr>
        <td>{{ item.name }}</td>
        <td>{{ item.price }}</td>
        <td><input type="number" name="input_data" value="{{ item.input_data }}"></td>
      </tr>
    {% endfor %}
  </tbody>
</table>
<button type="submit">计算</button>
</form>

result.html

<p>总酬金:{{ total }}</p>