@alexto13

Как передать календарь в общую форму с get запросом?

Здравствуйте.подскажите пожалуйста как передать календарь в форму с get запросом,с нажатием на дни недели и передачей в форму?Идёт фильтрация по всем полям одновременно сейчас,только с датой беда(
6375c3a9efd05566202376.png
Примерно как такой календарь можно передать? Заранее благодарен.

models
class Traveller(models.Model):
    title = models.CharField(max_length=30,default='',null=False)

    origin = models.ForeignKey(Origin,on_delete=models.CASCADE,max_length=100,verbose_name= 'Источник',default='')
    destination = models.ForeignKey(Destination,on_delete=models.CASCADE, verbose_name="Местонахождение",default='')
    transport = models.ForeignKey(Transport,on_delete=models.CASCADE, verbose_name="Транспорт",default='')
    passengers = models.ForeignKey(Passengers,on_delete=models.CASCADE, verbose_name="Пассажиры",default='')
    url = models.SlugField(max_length=130, unique=True)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = 'Путешествие'
        verbose_name_plural = 'Путешествие'

    def get_absolute_url(self):
        return reverse("traveller", kwargs={"url": self.url})


views:
class FullTraveller:

    def get_origin(self):

        return Origin.objects.all()

    def get_destination(self):
        return Destination.objects.all()

    def get_transport(self):
        return Transport.objects.all()

    def get_passengers(self):
        return Passengers.objects.all()



class TravellerView(FullTraveller, ListView):

    template_name = 'index.html'
    model = Traveller
    queryset = Traveller.objects.all()
    paginate_by = 1


class FilterTravelView(FullTraveller,ListView):


    def get_queryset(self):
        if self.request.GET.getlist("origin") and self.request.GET.getlist("destination") and self.request.GET.getlist(
                "transport") and self.request.GET.getlist("destination"):
            queryset = Traveller.objects.filter(origin__in=self.request.GET.getlist("origin"),
                                                destination__in=self.request.GET.getlist("destination"),
                                                transport__in=self.request.GET.getlist("transport"),
                                                passengers__in=self.request.GET.getlist("passengers"))

        else:
            queryset = Traveller.objects.filter(Q(origin__in=self.request.GET.getlist("origin")) | Q(
                destination__in=self.request.GET.getlist("destination")) | Q(
                    transport__in=self.request.GET.getlist("transport"))| Q(
                        passengers__in=self.request.GET.getlist("passengers")))
        return queryset

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context["origin"] = ''.join([f"origin={x}&" for x in self.request.GET.getlist("origin")])
        context["destination"] = ''.join([f"destination={x}&" for x in self.request.GET.getlist("destination")])
        context["transport"] = ''.join([f"transport={x}&" for x in self.request.GET.getlist("transport")])
        context["passengers"] = ''.join([f"passengers={x}&" for x in self.request.GET.getlist("passengers")])
        return context


форма в шаблоне:
<form action="{% url 'filter' %}" method="get" name="filter" class="hero__form">.....данные..... </form>
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
А почему бы не воспользоваться стандартным календариком из html5 тега intput с типом date?
Будет приходить, как и все остальные элементы input
<form>
....
<input type="date" id="birthday" name="birthday" value="1985-12-11">
....
</form>

PS. я как-то подзабил на всякие волшебные datepicker...
Не поддерживают только очень старые браузеры типа ослика 11 и сафари древних релизов.
Ну и с мобильными девайсами все отлично, нативное отображение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы