Django - получить месяц и год от (данные фильтра Datepicker) - PullRequest
0 голосов
/ 28 февраля 2019

Это Forms.py

class dateFilter(forms.Form):
date = forms.DateField(input_formats=['%Y-%M-%D'],label='',required=False,
                          widget=forms.DateInput(attrs={
                                                "placeholder": " Select a date",
                                                "class": "dateClass",
                                                "id": "datepicker",
                                                "name": "dateFilter"}))

Это мои views.py

def bsoCharts(request):
#-----------Filter Section------------------------------------------

dateFilter = forms.dateFilter()
FilteredDate = request.POST.get('date')


return render(request, 'BSO/BSO_dashboard2.html', 'dateFilter':dateFilter )

Это мой шаблон, в котором я отображаю форму:

<div class="container">
        <div class="row">
          <div class="col-12 col-sm-12 col-md-6 col-lg-4">
            <form action="{% url 'BSO:BSO_Dashboard' %}"  method="post" autocomplete="off">
              {% csrf_token %}
              {{dateFilter}}
            </form>
          </div>

        </div>
      </div>

Это мой JQuery для средства выбора даты:

<script>
$("#datepicker").datepicker( {
          changeMonth: true,
          changeYear: true,
          showButtonPanel: true,
          dateFormat: 'yy-m-d',
          onSelect: function(dateText, inst) {
        $(this).parents("form").submit();
          }
});

Это фотоизображение средства выбора даты и значение после выбора даты:

введите описание изображения здесь

После получения результатов в my views.py с использованием этого метода get:

   FilteredDate = request.POST.get('date')

я хотел бы получить только месяц и год, используяметод ниже, так что я могу использовать его в качестве фильтра (содержит) для другого набора запросов:

   FilteredDate.month

Однако, это дает мне эту ошибку:

Django Версия: 2.1.5 Тип исключения:Значение исключения AttributeError: у объекта 'str' нет атрибута 'month'

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 28 февраля 2019

request.POST - это словарь необработанных значений, который отправляется.Таким образом, поля почти всегда являются строками (или числами с плавающей запятой / целыми числами).Никогда значения Python, которые они представляют.

При работе с формами Django, которые вы делаете, вы всегда должны вызывать form.is_valid(), чтобы очистить форму, а затем получить значения из form.cleaned_data:

form = forms.dateFilter(request.POST)  # create the form with the data submitted
if form.is_valid():  # check the form is valid (which populates cleaned_data at the same time)
    filtered_date = form.cleaned_data.get('date')  # this is a python date
    if filtered_date:  # since date is optional, check it was passed
        month = filtered_date.month
...