Как сделать таблицу в шаблоне - PullRequest
1 голос
/ 22 мая 2019

Модель


timetable_choices =(
    ('Monday','Monday'),
    ('Tuesday','Tuesday'),
    ('Wednesday','Wednesday'),
    ('Thursday','Thursday'),
    ('Friday','Friday'),
    ('Saturday','Saturday'),
)


class Timetable(models.Model):
    day = models.ForeignKey('Day',on_delete=models.CASCADE,blank=True,null=True)
    start = models.IntegerField()
    end = models.IntegerField()
    subject = models.CharField(max_length=12)

class Day(models.Model):
    day = models.CharField(max_length=9, choices=timetable_choices)

Я уже заполнил таблицы «День» и «Расписание».

Просмотры


class Timetabletemplate(TemplateView):
    template_name = 'timetable.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['timetable'] = Timetable.objects.all()
        context['monday'] = Timetable.objects.filter(day="Monday")
        return context

Template

<table style="width:100%">
  <tr>
    <th></th>
    <th>1</th>
  </tr>
  <tr>
    <td>Monday</td>

    {% for item in monday %}
<td>{{item.subject}}</td>
      {% endfor %}

  </tr>
</table>

То, что я пытаюсь сделать, это сделать объект в ячейке. У меня есть n предметов, количество предметов зависит от того, сколько предметов было добавлено пользователем. Я хочу, чтобы субъекты, когда день = понедельник в первом ряду, и аналогично, когда день = вторник, среда - в соответствующих строках ниже понедельника.

Я получаю сообщение об ошибке invalid literal for int() with base 10: 'Monday', когда я пробовал этот код.

1 Ответ

3 голосов
/ 22 мая 2019
context['monday'] = Timetable.objects.filter(day__day="Monday")

при использовании модели ForeignKey до Day дни сохраняются как pk, а не как имя выбора

...