Как решить, когда Django views.py не передает значение словаря в html? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть значение словаря в views.py и рендеринг его во внешний интерфейс. Когда я oop через словарь в html, отображается только одно значение, а другие нет. В чем может быть проблема для этого?

views.py

def Student_Create(request):
    form = Student_Model_Form(request.POST or None)
    # get class names and days
    classes = Create_Class.objects.all()
    cls = {}
    for i in classes:
        cls[i] = {
            'class_name': i.class_name,
            'from_day': str(i.from_days),
            'to_day': str(i.to_days),
            'from_time': i.from_time.strftime("%H:%M:%S"),
            'to_time': i.to_time.strftime("%H:%M:%S"),
        }
    print(cls)
    template_name = 'genius/students_create.html'
    context = {'form': form, 'classes': cls}
    return render(request, template_name, context)

student. html

<div class="form-group">
  <label for="select-class">Select Class</label>
  <select class="custom-select" multiple name="select-class">
     {% for i in classes%}
      <option value="{{i.class_name}}">{{i.class_name}} : {{i.from_day}}-{{i.to_day}}</option>
     {% endfor %}
  </select>
</div>

И окончательный результат будет таким.

См. Выход

Буду признателен за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Вы можете использовать список для хранения данных:

...
cls = []  # Change from dict to list.
for i in classes:
    cls.append({
        'class_name': i.class_name,
        'from_day': str(i.from_days),
        'to_day': str(i.to_days),
        'from_time': i.from_time.strftime("%H:%M:%S"),
        'to_time': i.to_time.strftime("%H:%M:%S"),
    })
...
0 голосов
/ 17 апреля 2020

Вместо того, чтобы создавать dict как выше. Вы можете сделать views.py

def Student_Create(request):
    form = Student_Model_Form(request.POST or None)
    # get class names and days
    classes = Create_Class.objects.values_list('class_name', 'from_days', 'to_days' ,'from_time', 'to_time', flat=True)
    template_name = 'genius/students_create.html'
    context = {'form': form, 'classes': classes}
    return render(request, template_name, context)


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...