嵌套重组 - Django

2024-05-08

我有一个包含以下字段的模型:“日期”、“员工”和“计划时间”。每个员工对于不同的日期都有不同的计划工作时间。

我正在尝试构建我的模板,其中员工按行列出,他们的计划工作时间列在正确的相应日期下的列中。

像这样的东西 https://i.stack.imgur.com/pX2WK.png

到目前为止我的模板看起来像这样:

{% regroup emp3 by employee_name as emp9 %}
{% for employee_name in emp9 %}
<!--Job-->
<div class="table-row table-job-column employee-row"{{employee_name.grouper}}</div>

{% for x in employee_name.list %}

<div class="table-row table-fr-column">{{x.planned_hours}}</div>

{% endfor %}
{% endfor %}

My view:

def DesignHubR(request):
emp3_list = Projectsummaryplannedhours.objects.values_list('displayval', 'employeename').filter(businessunit='a').filter(billinggroup__startswith='PLS - Project').filter(Q(displayval=sunday2)|Q(displayval=sunday)).annotate(plannedhours__sum=Sum('plannedhours'))
emp3 = map(lambda x: {'date': x[0], 'employee_name': x[1], 'planned_hours': x[2]}, emp3_list)
context = {'sunday': sunday, 'sunday2': sunday2, 'emp3': emp3}
return render(request,'department_hub_ple.html', context)

我对当前结构的问题是它将第一个“计划时间”放在员工旁边。如果该日期没有计划时间,我需要能够插入空白列。我意识到我没有包含嵌套重组,但我尝试过的一切都不起作用。

注意:我将专栏日期拉到重组之外。

编辑以包括 EMP3_LIST:

[{'date': 'W/E 6/18/17', 'planned_hours': Decimal('45.00000'), 'employee_name': 'Bob'}, {'date': 'W/E 6/25/17', 'planned_hours': Decimal('45.00000'), 'employee_name': 'Bob'}, {'date': 'W/E 6/18/17', 'planned_hours': Decimal('17.00000'), 'employee_name': 'Jack'}, {'date': 'W/E 6/25/17', 'planned_hours': Decimal('13.00000'), 'employee_name': 'Jack'}, {'date': 'W/E 6/25/17', 'planned_hours': Decimal('1.00000'), 'employee_name': 'Stan'}, {'date': 'W/E 6/18/17', 'planned_hours': Decimal('27.00000'), 'employee_name': 'Albert'}, {'date': 'W/E 6/25/17', 'planned_hours': Decimal('29.00000'), 'employee_name': 'Albert'}]

Edit 2:

{% regroup emp3 by employee_name as emp9 %}
{% for employee_name in emp9 %}
<!--Job-->
<div class="table-row table-job-column employee-row">
{{employee_name.grouper}}</div>
{% regroup employee_name.list by date as date_list %}
{% for x in date_list %}
{% regroup x.list by planned_hours as plan_list %}
{% for y in plan_list %}

<div class="table-row table-fr-column">{{y.grouper}}</div>

{% endfor %}{% endfor %}

你有尝试过重组你的重组吗?您还尝试过基于类的视图吗?它们对于快速生成代码非常有用。像下面这样的东西。

风景:

Class EmployeeTimeSheetView(ListView):
    model = Projectsummaryplannedhours
    template_name = "department_hub_ple.html"

    def get_queryset(self): 
       return Projectsummaryplannedhours.objects.all().order_by('-date')

模板:

{% regroup object_list by date|date:"m/d/Y" as date_list %}
    {% for date in date_list %}
     ###html code {{ date.grouper }}
    {% regroup date.list by employee as employee_list %}
        {% for employee in employee_list %}
            ###html code {{ employee.grouper }}
        {% endfor %}
     {% endfor %}

这应该允许您构建一个以日期作为列标题的表格,然后按下面的顺序列出员工及其计划工作时间。它可能需要一些调整才能显示您想要的信息,这可能取决于您重新分组的字段。

我使用这种重新分组来按月然后按周对相关项目进行分组。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌套重组 - Django 的相关文章

随机推荐