Как я могу добавить виджет даты/календаря в формы django?

Я попытался перейти по этим ссылкам и это, но это не сработало. виджет не загружается в форму, а файлы js выдают ошибку 404 в консоли, пока они доступны по ссылке. Я использую хрустящие формы для рендеринга своей формы.

forms.py

       DateInput = partial(forms.DateInput, {'class': 'datepicker'})

    # patient Form
    class PatientForm(ModelForm):

        birth_date = forms.DateField(label='Birth Date',widget=DateInput())
        class Meta:
            model = Patient
            exclude = ['user',]

Шаблон

           <h2>Add Patient</h2>
            <form method="POST" action="{% url 'patients:patient_create' %}">

                {% csrf_token %}
                 {{ form|crispy }}
                <button type="submit" class="btn btn-primary" >Add Patients</button>
                <p></p>
            </form>
</div>
    {% endblock %}

    <script>
    $(document).ready(function() {
        $('.datepicker').datepicker();
    });
    </script>

Ссылки файлов js + CSS

<script src=”https://code.jquery.com/jquery-1.12.4.js”></script>
<script src=”https://code.jquery.com/ui/1.12.1/jquery-ui.js”></script>
<link rel=”stylesheet” href=”//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css”>

Ошибки в консоли

Not Found: /patients/”https://code.jquery.com/jquery-1.12.4.js”
Not Found: /patients/”https://code.jquery.com/ui/1.12.1/jquery-ui.js”
[18/Jul/2019 15:29:09] "GET /patients/%E2%80%9Dhttps://code.jquery.com/jquery-1.12.4.js%E2%80%9D HTTP/1.1" 404 6742
[18/Jul/2019 15:29:09] "GET /patients/%E2%80%9Dhttps://code.jquery.com/ui/1.12.1/jquery-ui.js%E2%80%9D HTTP/1.1" 404 6760
Not Found: /patients/”https://code.jquery.com/jquery-1.12.4.js”
[18/Jul/2019 15:29:10] "GET /patients/%E2%80%9Dhttps://code.jquery.com/jquery-1.12.4.js%E2%80%9D HTTP/1.1" 404 6742
Not Found: /patients/”https://code.jquery.com/ui/1.12.1/jquery-ui.js”
[18/Jul/2019 15:29:10] "GET /patients/%E2%80%9Dhttps://code.jquery.com/ui/1.12.1/jquery-ui.js%E2%80%9D HTTP/1.1" 404 6760
Not Found: /favicon.ico

в моем коде у меня много версий jquery, которые могут вызвать проблему. Мне нужен виджет, который более удобен для пользователя, чем jquery ui, поэтому есть ли какой-либо другой метод, который я могу использовать для добавления виджета с тем же способом jquery ui?


person Community    schedule 18.07.2019    source источник


Ответы (2)


в ваших формах.py:

class DateInput(forms.DateInput):
     input_type = 'date'

class PatientForm(ModelForm):


        class Meta:
            model = Patient
            exclude = ['user',]
            widgets = {
                'birth_date':DateInput,
               }

Попробуй это

person Shubham Devgan    schedule 18.07.2019
comment
теперь я получаю эту ошибку: объект functools.partial не имеет атрибута is_hidden - person ; 18.07.2019
comment
Вы удалили эту строку DateInput = partial(forms.DateInput, {'class': 'datepicker'}), если нет, попробуйте удалить ее - person Shubham Devgan; 18.07.2019
comment
так как я могу ссылаться на DateInput в классе? - person ; 18.07.2019
comment
@AMMARRADY Я не понимаю, что ты пытаешься сказать - person Shubham Devgan; 18.07.2019
comment
DateInput определяется в строке, которую вы хотите, чтобы я удалил. - person ; 18.07.2019
comment
да, но, возможно, именно это вызывает ошибку, попробуйте определить ее так, как я ответил. Просто скопируйте мой код вместо вашего и сообщите мне результат - person Shubham Devgan; 18.07.2019

Проблема заключалась в том, что современные браузеры не будут отображать дату выбора, не делая type до date

вот что решило это для меня

DateInput = partial(forms.DateInput, {'class': 'datepicker','type': 'date'})
# patient Form
class PatientForm(ModelForm):

    birth_date = forms.DateField(label='Birth Date',widget=DateInput())
    class Meta:
        model = Patient
        exclude = ['user',]
person Community    schedule 18.07.2019