【问题标题】:Display all days in specific month for data显示特定月份的所有日期以获取数据
【发布时间】:2021-10-17 05:05:46
【问题描述】:

我想创建一个显示给定月份的所有日期的表,然后检查这一天是否在数据库中,是否显示给定记录的必要数据 目前我有循环显示月份的所有天数:

def example_table(request,pk,month):
    something = database.filter(name__pk=pk,date__month=month).all()
    num_days = monthrange(2021, month)[1]
    num_days = range(1,num_days+1)
    context = locals()

在模板中我添加了类似的内容:

{%for time in num_days%}
{%for x in something%}
{%if x.day == time%}
table
{%endif%}
{%endfor%}
{%endfor%}

但这条记录重复了 x 次。 有人可以给我一些建议如何做到这一点? 应该是这样的

1 data data data
2 
3
4 data data data
...etc

【问题讨论】:

    标签: python-3.x django django-models django-views django-templates


    【解决方案1】:

    试试这样的,

    from itertools import groupby
    
    def example_table(request,pk,month):
        something = database.filter(name__pk=pk,date__month=month).order_by("date__day")
        day_wise_data = {day: tuple(data) for day, data in groupby(something, key=lambda each: each.date.day)}
        num_days = monthrange(2021, month)[1]
        num_days = range(1,num_days+1)
        day_wise_data = [day_wise_data.get(day, tuple()) for day in num_days]
        context = {"day_wise_data": day_wise_data}
    
    <tr>
    <th>Day</th>
    <th colspan="100%">Day Data</th>
    </tr>
    {%for data in day_wise_data%}
    <tr>
    <td>{{ forloop.counter + 1 }}</td>
    {% for obj in data %}
        <td> {{ obj.whatever }} </td>
    {% endfor %}
    </tr>
    {%endfor%}
    

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 2017-01-19
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      相关资源
      最近更新 更多