Как использовать DatePicker в ModelForm в django 3.0? - PullRequest
1 голос
/ 07 апреля 2020

Я использую django 3.0, и я пытаюсь отобразить виджет DatePicker в моей ModelForm, но я не могу понять, как (все, что я могу получить, это текстовое поле). Я пытался найти некоторые решения, но не смог найти ни одного. Вот так выглядят моя модель и моя ModelForm:

class Membership(models.Model):
  start_date = models.DateField(default=datetime.today, null=True)
  owner = models.ForeignKey(Client, on_delete=models.CASCADE, null=True)
  type = models.ForeignKey(MembershipType, on_delete=models.CASCADE, null=True)

class MembershipForm(ModelForm):
  class Meta:
    model = Membership
    fields = ['owner', 'start_date', 'type']
    widgets = {
        'start_date': forms.DateInput
    }

А это моя html:

<form class="container" action="" method="POST">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-primary">Submit</button>
</form>

1 Ответ

0 голосов
/ 07 апреля 2020

Это ожидаемое поведение. A DateInput widget [Django -doc] - это просто элемент <input type="text"> с необязательным параметром format.

Вы можете использовать пакет, например, django-bootstrap-datepicker-plus [pypi] , а затем определите форму с помощью DatePickerInput:

from bootstrap_datepicker_plus import <b>DatePickerInput</b>

class MembershipForm(ModelForm):
  class Meta:
    model = Membership
    fields = ['owner', 'start_date', 'type']
    widgets = {
        'start_date': <b>DatePickerInput</b>
    }

В шаблоне вы будете нужно отрендерить носитель формы и загрузить bootstrap css и javascript:

{% load bootstrap4 %}
{% bootstrap_css %}
{% bootstrap_javascript jquery='full' %}
{{ <b>form.media</b> }}

<form class="container" action="" method="POST">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...