Django python: Using DateInput --Required argument 'year' (pos 1) not found

user1807271 picture user1807271 · Jul 10, 2015 · Viewed 14k times · Source

I'm trying to use DateInput, but I get the following error Required argument 'year' (pos 1) not found here {{ form.incident_date_time_reported|add_class:"form-control"}} (line 52)

forms.py

from django import forms
import datetime
from functools import partial
DateInput = partial(forms.DateInput, {'class': 'datepicker'})

class IncidentForm(forms.Form):

    incident_date_time_reported = forms.DateField(initial=datetime.date, required=False, widget=forms.DateInput)

    def search(self):

        # cleaning the data
        incident_date_time_reported = self.cleaned_data.get('incident_date_time_reported')

        query = Incident.objects.all()

        if incident_date_time_reported is not None:
            query = query.filter(incident_date_time_reported=incident_date_time_reported)


        return(query)

index.html

{% extends "base.html" %}
{% load widget_tweaks %}

{% block content %}
<div class="container-fluid">

    <!-----INPUT FORM------------------->
    <form action="{% url 'incidents:index' %}" method="GET">

        <div class="row">                       
            <div class="form-group col-md-3">
                <label>Date Incident Reported</label><br>
                {{ form.incident_date_time_reported|add_class:"form-control"}}
                {{ form.incident_date_time_reported.errors }}
            </div>
            <div class="form-group col-md-3">
                <label>------</label>
                <button type="submit" class="btn btn-primary btn-block">Search</button>
            </div>
        </div>
    </form>
</div><!-----END OF BOOTSTAP CONTAINER FLUID----->
{% endblock %}

Answer

Adrian Ghiuta picture Adrian Ghiuta · Jul 10, 2015

datetime.date is incorrectly used. It's a function with all the arguments required.

If you are attempting to initially populate with the current day, you should use datetime.date.today().