0
0 комментариев

Здравствуйте! Очень долго не могу решить следующую проблему: мне необходимо реализовать расписание уроков на сайте django. то есть выглядеть это должно следующим образом — на странице есть выпадающий список с классами (5″А», 5″Б»….11″В») и кнопка «Показать». При выборе элемента выпадающего списка должна открываться расписание уроков на неделю для выбранного класса. В идеале — реализация без редиректа, но думаю, такое я точно не осилю, так как на данный момент не могу сделать подобного и со сменой страницы. Итак, у меня имеется следующее:
В models.py:

class Classes(models.Model):
    class Meta:
        db_table = 'classes'
        verbose_name_plural = "Классы"
        verbose_name = "Класс"
 
    name = models.CharField(max_length=50, unique=True, verbose_name = 'Классы')
 
    def __str__(self):
        return self.name
 
class Lessons(models.Model):
    class Meta():
        db_table = "lessons"
        verbose_name_plural = "Уроки"
        verbose_name = "Уроки"
    lessons_class = models.ForeignKey(Classes)
    lessons_creationdate = models.DateField()
    lessons_weekcontent = RichTextField()

Соответственно, в админке я вручную ввожу классы(5″А»…) и тд, после чего вручную ввожу расписание уроков на неделю и выбираю к какому классу оно относится. Далее, в forms.py:

class LessonsForm(forms.ModelForm):
        classname = forms.ModelChoiceField(queryset = Classes.objects.all(),empty_label="Выберите класс",widget=forms.Select(attrs={'class':'dropdown'}),label="Класс")
        class Meta:
            model = Lessons
            fields = ('lessons_class',)

Огромное количество раз перечитал документацию django, но все равно смутно себе представляю, как должен выглядеть при этом views.py. У меня имеется следующее:

def LessonsShow(request):
 
    if request.method == 'POST':
 
        form = LessonsForm(request.POST)
 
        if form.is_valid():
 
            return HttpResponseRedirect('/about/')
 
    else:
        form = LessonsForm()
 
    return render(request, 'timetable.html', {'form': form})

Я так понимаю, у меня должна быть какая-то обработка после if form.is_valid():, но не представляю, что там должно быть. И наконец в шаблоне timetable.html:

{% extends 'base.html' %}
{% block content %}
 
<form  method="post">
  {% csrf_token %}
  {{ form.classname }}
  <input type="submit" value="Показать расписание">
</form>
{% endblock %}

В итоге на странице http://127.0.0.1:8000/timetable/ у меня есть выпадающий список, с классами из моей базы данных, но при выборе какого-то из них и нажатия кнопки, ничего не происходит. Что сделать, чтобы при выборе значения этого выпадающего списка и нажатия на кнопку «Показать расписание» открывалась соотвествующая этому классу таблица с расписанием уроков на неделю? Очень надеюсь на Вашу помощь.


Добавить комментарий