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'),
]