django template datetime-local
Step 1: In your Django model, define a DateTimeField.
class YourModel(models.Model):
your_datetime_field = models.DateTimeField()
Step 2: In your Django forms.py, create a ModelForm for the model.
from django import forms
from .models import YourModel
class YourModelForm(forms.ModelForm):
class Meta:
model = YourModel
fields = ['your_datetime_field']
widgets = {
'your_datetime_field': forms.DateTimeInput(attrs={'type': 'datetime-local'}),
}
Step 3: In your Django views.py, use the form in your view.
from django.shortcuts import render, redirect
from .forms import YourModelForm
def your_view(request):
if request.method == 'POST':
form = YourModelForm(request.POST)
if form.is_valid():
form.save()
return redirect('success_url')
else:
form = YourModelForm()
return render(request, 'your_template.html', {'form': form})
Step 4: In your Django template (your_template.html), render the form.
<form method="post" action="{% url 'your_view_name' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
Step 5: Ensure that your HTML template includes the necessary JavaScript for the datetime-local
input to function properly.
<script>
document.addEventListener('DOMContentLoaded', function() {
const datetimeInputs = document.querySelectorAll('input[type=datetime-local]');
datetimeInputs.forEach(function(input) {
input.value = input.value.slice(0, -3); // Remove seconds from the initial value
});
});
</script>
Step 6: Include the URL pattern for your view in your Django urls.py.
from django.urls import path
from .views import your_view
urlpatterns = [
path('your-url/', your_view, name='your_view_name'),
]