`class Daily(models.Model):
    transid = models.AutoField(primary_key=True)
    transdate = models.DateField()
    transdetails = models.ForeignKey(Details, on_delete=models.CASCADE)
    transcategory = models.ForeignKey(MasterCategory, on_delete=models.CASCADE)
    transmode = models.ForeignKey(PaymentMode, on_delete=models.CASCADE)
    transsubdetails = models.CharField(max_length=100, blank=False, null=False)
    transamount = models.DecimalField(max_digits=7, decimal_places=2)
    objects = models.Manager()

    def __str__(self):
        return "%s %s %s %s %s %s %s" % (
            self.transid,
            self.transdate,
            self.transdetails,
            self.transcategory,
            self.transmode,
            self.transsubdetails,
            self.transamount)`

上面是我的模型 我的模板如下


{% for month in months %}
<h3>{{ month__month }}</h3>
<table style="width: 100%">
  <tr>
    <th>ID</th>
    <th>Date</th>
    <th>Details</th>
    <th>Category</th>
    <th>Pay Mode</th>
    <th>Sub Details</th>
    <th>Amount</th>
  </tr>
{% for trans in mydata %}
    <tr>
        <td>{{ trans.transid }}</td>
        <td>{{ trans.transdate }}</td>
        <td>{{ trans.transdetails }}</td>
        <td>{{ trans.transcategory }}</td>
        <td>{{ trans.transmode }}</td>
        <td>{{ trans.transsubdetails }}</td>
        <td>{{ trans.transamount }}</td>
    </tr>
{% endfor %}
</table>
{% endfor %}

我的观点是

def alltrans(request):
    my_data = Daily.objects.all()
    mnths = len(Daily.objects.values('transdate__month').distinct())+1
    totamount = Daily.objects.all().aggregate(totb=Sum('transamount'))['totb']
    mnths1 = Daily.objects.values('transdate__month').distinct(),
    monthsba = [Daily.objects.filter(transdate__month=month) for month in range(1, mnths)]
    ms = {
        'months': mnths1,
        'monthsbal': monthsba,
        'mydata': my_data,
        'totamount': totamount,
        'title': 'All Trans',
    }
    return render(request, 'alltrans.html', ms)

我正试着按月引进模板...

1月金额(交易额)按月筛选=1 id日期明细类别支付模式子明细金额

2月合计(成交金额)按月过滤=2

诸若此类

请给我带路

推荐答案

可以按照您正在try 的方式手动构建数据.通过 Select 月份(就像您所做的那样),然后按月份循环进行数据筛选,同时聚合值:

Views.py

def trans_per_month(request):
    months = Daily.objects.values('transdate__month').distinct()
    data = {}
    for obj in months:
        month = calendar.month_name[obj['transdate__month']]
        qs = (
            Daily.objects
            .filter(transdate__month=obj['transdate__month'])
        )
        amount = qs.aggregate(total=Sum('transamount'))

        data[obj['transdate__month']] = {
            'month': month,
            'qs': qs,
            'total': amount['total']
        }

    context = {'data': data}

    return render(request, 'Trans_per_month.html', context)

Trans_per_month.html

<body>
    {% for key, value in data.items %}
    <h3>{{ value.month }}</h3>
    <table style="width: 100%">
        <tr>
            <th>ID</th>
            <th>Date</th>
            <th>Details</th>
            <th>Category</th>
            <th>Pay Mode</th>
            <th>Sub Details</th>
            <th>Amount</th>
        </tr>

        {% for obj in value.qs %}
        <tr>
            <td>{{ obj.transid }}</td>
            <td>{{ obj.transdate }}</td>
            <td>{{ obj.transdetails }}</td>
            <td>{{ obj.transcategory }}</td>
            <td>{{ obj.transmode }}</td>
            <td>{{ obj.transsubdetails }}</td>
            <td>{{ obj.transamount }}</td>
        </tr>
        {% endfor %}

        <tr>
            <td colspan="6">Total</td>
            <td>{{ value.total }}</td>
        </tr>
    </table>
    {% endfor %}
</body>

Django相关问答推荐

Django Form初始值不在呈现上起作用

DjangoRestFramework 解析错误:"多部分表单解析错误多部分中的无效边界:None"

SQLite上可以正常使用Many2Many链接注释,但MariaDB上无法正常使用(生产环境)

Django: 无法将我的 comments 关联到特定产品

来自日历的 Django 动态 url

如何在两个字段上查找 django 模型的副本?

Django 按月分组并按月显示在模板中

Django REST Framework如何在序列化程序中引发验证错误时指定错误代码

在 django/python 上访问请求标头

如何在 django 中生成 url

如何缓存 Django Rest Framework API 调用?

如何在 django admin 中显示布尔属性

如何找到两个 Django 查询集的交集?

访问 django 管理模板中的对象

Django:根据自定义函数过滤查询

过滤查询参数

在 Django 中查询 top x 元素

如何更改 ModelForm 中所有 Django 日期字段的默认小部件?

Django的不区分大小写的网址?

ValueError:Cannot add *: instance is on database "default", value is on database "None"