根据日期计算 Django 数据查询

Posted

技术标签:

【中文标题】根据日期计算 Django 数据查询【英文标题】:Calculate Django Data query according to date 【发布时间】:2017-10-07 21:35:06 【问题描述】:

这是我的 models.py 文件。

class CustomerInfo(models.Model):
    customer_name=models.CharField('Customer Name', max_length=50)
    customer_mobile_no = models.CharField('Mobile No', null=True, blank=True,max_length=12)
    customer_price=models.IntegerField('Customer Price')
    customer_product_warrenty = models.CharField('Product Warrenty',null=True, blank=True,max_length=10)
    customer_sell_date = models.DateTimeField('date-published')
    customer_product_id=models.CharField('Product ID',max_length=150,null=True, blank=True)
    customer_product_name=models.CharField('Product Name', max_length=50)


    def __str__(self):
        return self.customer_name

当我按日期查找数据查询信息时,我想仅按选定日期计算“customer_price”。然后我将显示到我的 html 页面。 这是我按日期的搜索查询。

这是我的 views.py 文件

def dailyReport(request):

    if request.method =='POST':
        datelist=request.POST['datewisesearch']

        try:
            customers = CustomerInfo.objects.filter(
                customer_sell_date__day=datelist)

            months=timezone.now().month
            years = timezone.now().year

            return render(request, 'shop/report.html', "customers": customers, "datelist": datelist, "months": months, "years": years)


        except:
            pass

        return render(request,'shop/report.html', context=None)

这是html页面

    % extends "shop/base.html" %

    % block content_area %

    <div class="col-lg-12">
        <div class="daily_title">
            <h2>Daily Report</h2>
        </div>
        <form action="% url 'shop:dailyReport' %" class="" method="POST">
            % csrf_token %
            <div class="form-group">
                <label for="datewisesearch">Search Product:</label>
                <input type="text" class="form-control" id="datewisesearch" name="datewisesearch">
            </div>

            <button type="submit" class="btn btn-default">Submit</button>
        </form>
    </div>

    <div class="col-lg-12">
        <br>
        <hr>
        <button type="button" class="btn btn-success">See Today Date is: datelist-months-years : Reports</button>
        <br>
        <hr>


    <div class="table table-bordered">
        <table class="table">
        <thead>
            <tr>
                <th>No</th>
                <th>Invoice ID</th>
                <th>Name</th>
                <th>Mobile</th>
                <th>Product Name</th>
                <th>Product ID</th>
                <th>Warrenty</th>
                <th>Customer Price</th>

            </tr>
        </thead>
        % for x in customers  %
           <tbody>
                <tr>
                    <td> forloop.counter </td>
                    <td>x.id</td>
                    <td><a href="% url "shop:customersProfile" x.id %">x.customer_name</a></td>
                    <td>x.customer_mobile_no</td>
                    <td>x.customer_product_name</td>
                    <td>x.customer_product_id</td>
                    <td>x.customer_product_warrenty Month</td>
                    <td>x.customer_price TK</td>
                </tr>

            </tbody>

        % endfor %
        <h2>Total Cost is:sum_price </h2>
        </table>
    </div>
    </div>




% endblock content_area %

现在,计算我选择的日期内的所有“customer_price”,并在表格下方显示总价。

【问题讨论】:

使用聚合和求和函数:Model.objects.aggregate(Sum('field_name')) 如何显示我的 HTML 页面? 【参考方案1】:

也许你想要sum聚合over-a-queryset

在存在行后的视图中添加 sum_price

from django.db.models import Sum

customers = CustomerInfo.objects.filter(customer_sell_date__day=datelist)
# Add next line
sum_price = customers.aggregate(sp=Sum('customer_price')).get('sp', 0)
# Don't foget to add sum_price to your context

【讨论】:

更新并添加详细信息到答案 我在 HTML 表格中显示了所有 customer_price 列表。现在我要计算总 customer_price 并在 HTML 表下穿鞋。 添加详情,请查看。 谢谢。它工作正常。但我必须知道它是如何工作的?你能告诉我它是如何工作的吗?

以上是关于根据日期计算 Django 数据查询的主要内容,如果未能解决你的问题,请参考以下文章

如何根据django查询中的日期获得等距离的行?

如何在Django中根据分钟查询输入数?

django使用日期不能查询数据

根据某些模型日期字段运行 Django Celery Beat 任务

如何根据日期计算查询中的总数?

MySQL查询根据按月分组的激活日期计算累积用户数