This is a fork of django-tempus-dominus that fixes the following bugs:
- Date fields that use the DatePicker widget that are initialised with data are not rendered correctly if a custom date input format is in use.
- Time fields that use the TimePicker widget that are initialised with data do not display the preset time value.
- Date fields that use the DatePicker widget that are initialised with data do not display the preset time value.
This version correctly renders all dates and times, but you must make sure that any entries in Django's settings file for DATE_INPUT_FORMATS, TIME_INPUT_FORMATS and DATETIME_INPUT_FORMATS are compatible with any format options that you set for the widget format.
The widget render() code has also been updated to be compatible with Django 2.1 which passes in a renderer parameter.
The original documentation follows below.
Django Tempus Dominus provides Django widgets for the Tempus Dominus Bootstrap 4 DateTime date and time picker. Why yet another date and time picker for Django? None supported the Tempus Dominus date and time picker, which is actively developed and feature rich. It is a successor to the popular bootstrap-datetimepicker
JavaScript library.
-
From PyPI:
pip install django-tempus-dominus
-
From source:
git clone https://github.com/FlipperPA/django-tempus-dominus.git
pip install -e django-tempus-dominus
Add tempus_dominus
to INSTALLED_APPS
in your Django settings.
The following settings are available:
TEMPUS_DOMINUS_LOCALIZE
(default:False
): ifTrue
, widgets will be translated to the selected browser language and use the localized date and time formats.TEMPUS_DOMINUS_INCLUDE_ASSETS
(default:True
): ifTrue
, loads Tempus Dominus andmoment
JS and CSS from Cloudflare's CDN, otherwise loading the JS and CSS are up to you.
Three widgets are provided:
DatePicker
- Defaults to
YYYY-MM-DD
- Defaults to
L
ifTEMPUS_DOMINUS_LOCALIZE
isTrue
- Defaults to
DateTimePicker
- Defaults to
YYYY-MM-DD HH:mm:ss
- Defaults to
L LTS
ifTEMPUS_DOMINUS_LOCALIZE
isTrue
- Defaults to
TimePicker
- Defaults to
HH:mm:ss
- Defaults to
LTS
ifTEMPUS_DOMINUS_LOCALIZE
isTrue
- Defaults to
In your Django form, you can use the widgets like this:
import datetime
from django import forms
from tempus_dominus.widgets import DatePicker, TimePicker, DateTimePicker
class MyForm(forms.Form):
date_field = forms.DateField(widget=DatePicker())
date_field_required_with_min_max_date = forms.DateField(
required=True,
widget=DatePicker(
options={
'minDate': '2009-01-20',
'maxDate': '2017-01-20',
}
),
)
time_field = forms.TimeField(
widget=TimePicker(
options={
'enabledHours': [9, 10, 11, 12, 13, 14, 15, 16],
}
),
)
datetime_field = forms.DateTimeField(
widget=DateTimePicker(
options={
'minDate': (datetime.date.today() + datetime.timedelta(days=1)).strftime('%Y-%m-%d'), # Tomorrow
'useCurrent': True,
'collapse': False,
}
),
)
The options
dictionary will be passed to Tempus Dominus. A full list of options is available here.
Then in your template, include jQuery, {{ form.media }}
, and render the form:
<html>
<head>
{# Include FontAwesome; required for icon display #}
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css">
{# Include Bootstrap 4 and jQuery #}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
{# Django Tempus Dominus assets are included in `{{ form.media }}` #}
{{ form.media }}
</head>
<body>
<div class="container">
<div class="row">
<div class="col">
<form method="post" action=".">
{% csrf_token %}
{{ form.as_p }}
</form>
</div>
</div>
</div>
</body>
</html>
- 5.0.1.5: Fix to ensure options are passed in proper JSON.
- 5.0.1.4: Include template in the MANIFEST.in file.
- 5.0.1.3: Add setting to exclude CDN CSS and JS assets. Add initial test suite.
- 5.0.1.2: Documentation clean up.
- 5.0.1.1: Option to l10n and i18n to all pickers.
- 5.0.1.0: Upgrade to Tempus Dominus full release version
5.0.1
. Fix bug for populating initial values (thank you, @ianastewart). - 0.1.2: UX enhancement: auto-dismiss dialog if the input loses focus.
- 0.1.1: Bug fixes.
- 0.1.0: Initial release.
- Timothy Allen (https://github.com/FlipperPA)
- Bryan Collazo (https://github.com/bcollazo)
- Donna St. Louis (https://github.com/dcstlouis)
- Ian Stewart (https://github.com/ianastewart)
- Jake Bell (https://github.com/theunraveler)
- John Carroll (https://github.com/johnnyporkchops)
- Katherine Dey (https://github.com/deyspring)
- Kenneth Love (https://github.com/kennethlove)
- Kevan Swanberg (https://github.com/kevswanberg)
- Ryan Sullivan (https://github.com/rgs258)
- Stéphane "Twidi" Angel (https://github.com/twidi)
- Tiffany Huang (https://github.com/tiff8433)
- Václav 'ax' Hůla (https://github.com/AxTheB)
- waymou (https://github.com/waymao)