将数据从视图传递到模板

时间:2019-06-23 07:55:45

标签: django-templates django-views

我想问您如何将数据从视图传递到模板。我有员工,中心,班次和名为Scheduler的模型:

class Scheduler(models.Model):
    year = models.IntegerField(null=True)
    month = models.IntegerField(null=True)
    day = models.IntegerField(null=True)
    center = models.ForeignKey('PPHCenter.Center', on_delete=models.CASCADE)
    shift = models.ForeignKey('PPHShift.Shift', on_delete=models.CASCADE)
    employee = models.ForeignKey('PPHEmployee.Employee', on_delete=models.CASCADE, null=True)

我的视图如下:

def month_view(request, year, month, center):
    center = get_object_or_404(Center, pk=center)
    employees = Employee.objects.filter(centers=center.id)
    shifts = Shift.objects.filter(center=center)

    year, month = int(year), int(month)
    cal = calendar.monthcalendar(year, month)
    dtstart = datetime(year, month, 1)
    last_day = max(cal[-1])
    dtend = datetime(year, month, last_day)
    corrected_last_day = last_day+1

    context = {
        'center': center,
        'employees': employees,
        'shifts': shifts,
        'dtstart': dtstart,
        'dtend': dtend,
        'last_day': range(1, corrected_last_day),
        'year': year,
        'month': month,
    }
    return render(request, 'scheduler/month_view.html', context)

我的模板如下所示:

<div class="container-fluid">
        CENTER: {{ center.name }} <br/>

    <div class="table-responsive">
        <table class="table">
            <thead>
            <tr>
                <th>Name/Day</th>
                {% for i in last_day %}
                    <th>{{ i }}</th>
                {% endfor %}
            </tr>
            </thead>
            <tbody>

                {% for e in employees %}

                    <tr>
                        <td>{{ e.name }} {{ e.last_name }}</td>
                        {% for i in last_day %}
                            <td><input name="{{ i }}" type="text" size="2" center="{{ center.id }}" employee="{{ e.id }}" year="{{ year }}" month="{{ month }}" day="{{ i }}"/></td>
                        {% endfor %}
                    </tr>
                {% endfor %}
            </tbody>
        </table>
    </div>

因此,我有一个表来显示某个中心的员工,我有基于月内天数的输入,并且我想将Scheduler中的数据显示为正确的输入值。如果我具有“ month_employee_data(year,month,center,employee)”功能,并且可以从模板调用它并填充for循环中的数据,那将是非常容易的。

谢谢您的帮助。

Filip

0 个答案:

没有答案