【问题标题】:Django - Regroup By DateDjango - 按日期重新组合
【发布时间】:2017-06-15 20:13:31
【问题描述】:

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

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

我目前正在按两个日期进行过滤。一名员工有第二个日期的时间,但没有最新的日期。我希望他的时间在第二个日期下正确列出,但目前它显示在当前日期下。大通看 1 小时:http://i.imgur.com/O4sake8.png

我的看法:

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, 'emp2': emp2, 'sunday2': sunday2, 'emp3': emp3}
return render(request,'department_hub_ple.html', context)

我的模板:

{% 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|date as date_list %}
{% for y in date_list %}


<div class="table-row table-fr-column">{{y.list.0.planned_hours|default:"0"}}</div>
<div class="table-row table-fr-column">{{y.list.1.planned_hours|default:"0"}}</div>
{% endfor %}{% endfor %}

emp3_list 数据:

[{'date': 'W/E 6/18/17', 'planned_hours': Decimal('45.00000'), 'employee_name': 'Waylan'}, {'date': 'W/E 6/25/17', 'planned_hours': Decimal('45.00000'), 'employee_name': 'Waylan'}, {'date': 'W/E 6/18/17', 'planned_hours': Decimal('17.00000'), 'employee_name': 'Michael'}, {'date': 'W/E 6/25/17', 'planned_hours': Decimal('13.00000'), 'employee_name': 'Michael'}, {'date': 'W/E 6/25/17', 'planned_hours': Decimal('1.00000'), 'employee_name': 'Chase'}, {'date': 'W/E 6/18/17', 'planned_hours': Decimal('27.00000'), 'employee_name': 'Bert'}, {'date': 'W/E 6/25/17', 'planned_hours': Decimal('29.00000'), 'employee_name': 'Bert'}]

型号:

class Projectsummaryplannedhours(models.Model):
    number = models.CharField(db_column='Number', max_length=50, blank=True, null=True)  # Field name made lowercase.
    description = models.CharField(db_column='Description', max_length=100, blank=True, null=True)  # Field name made lowercase.
    clientname = models.CharField(db_column='ClientName', max_length=100, blank=True, null=True)  # Field name made lowercase.
    department = models.CharField(db_column='Department', max_length=50, blank=True, null=True)  # Field name made lowercase.
    billinggroup = models.CharField(db_column='BillingGroup', max_length=50, blank=True, null=True)  # Field name made lowercase.
    businessunit = models.CharField(db_column='BusinessUnit', max_length=50, blank=True, null=True)  # Field name made lowercase.
    employeename = models.CharField(db_column='EmployeeName', max_length=50, blank=True, null=True)  # Field name made lowercase.
    displayval = models.CharField(db_column='DisplayVal', max_length=50, blank=True, null=True)  # Field name made lowercase.
    startofweek = models.DateTimeField(db_column='StartOfWeek', blank=True, null=True)  # Field name made lowercase.
    endofweek = models.DateTimeField(db_column='EndOfWeek', blank=True, null=True)  # Field name made lowercase.
    plannedhours = models.DecimalField(db_column='PlannedHours', max_digits=10, decimal_places=5, blank=True, null=True)  # Field name made lowercase.
    rateschedule = models.CharField(db_column='RateSchedule', max_length=50, blank=True, null=True)  # Field name made lowercase.
    classification = models.CharField(db_column='Classification', max_length=50, blank=True, null=True)  # Field name made lowercase.
    dollarsforecast = models.DecimalField(db_column='DollarsForecast', max_digits=10, decimal_places=5, blank=True, null=True)  # Field name made lowercase.
    deleted = models.NullBooleanField(db_column='Deleted')  # Field name made lowercase.
    datelastmodified = models.DateTimeField(db_column='DateLastModified', blank=True, null=True)  # Field name made lowercase.
    datecreated = models.DateTimeField(db_column='DateCreated', blank=True, null=True)  # Field name made lowercase.

【问题讨论】:

    标签: python django


    【解决方案1】:

    这可以是一个解决方案: {% for y in date_list %} 如果(y.list.0.date == current_date){ {{y.list.0.planned_hours|默认值:“0”}} {{y.list.1.planned_hours|默认值:“0”}} {{y.list.2.planned_hours|默认值:“0”}} }别的{ ----- {{y.list.0.planned_hours|默认值:“0”}} {{y.list.1.planned_hours|默认值:“0”}} } {% endfor %}{% endfor %}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 2020-12-02
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多