Предварительное заполнение полей даты и времени формы, созданной с помощью SplitDateTimeWidget
Для событий я храню даты начала и окончания события с помощью DateTime. Для создания события я использовал SplitDateTimeWidget для разделения даты и времени в форме. все в порядке! Но для редактирования события я не могу найти, как предварительно заполнить поля даты и времени в форме редактирования, они остаются пустыми
models.py
class Event(models.Model):
"""
Model of the "contents_event" table in the database
"""
category = models.CharField(max_length=30, choices=EVENT_CATEGORY, default=MISCELLANEOUS, verbose_name='Catégorie')
title = models.CharField(blank=False, max_length=100, verbose_name='Titre')
content = models.TextField(blank=False, verbose_name='Evènement')
start_date = models.DateTimeField(verbose_name='Début de l\'évènement')
end_date = models.DateTimeField(verbose_name='Fin de l\'évènement')
status = models.CharField(max_length=30, choices=CONTENT_STATUS, default=ACTIVATED, verbose_name='Statut')
last_edit = models.DateTimeField(auto_now=True, verbose_name='Dernière modification')
creation_date = models.DateTimeField(auto_now_add=True, verbose_name='Publication le')
photos = models.ManyToManyField(Photo, blank=True)
uuid = models.UUIDField(default=uuid.uuid4, unique=True, verbose_name='UUID')
author = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name='Auteur', related_name='create_events')
def __str__(self):
return f'Evènement - {self.title}'
def display_author(self):
"""Create a string for the author. This is required to display author in Admin."""
return self.author.get_full_name()
display_author.short_description = 'Auteur'
class Meta:
verbose_name_plural = "events"
forms.py :
class EventForm(ModelForm):
"""
Form used for create an event
"""
start_date = SplitDateTimeField(
label='Début de l\'évènement (Date / Heure)',
widget=widgets.SplitDateTimeWidget(
date_attrs={'type': 'date', 'style': 'width:25%;'},
time_attrs={'type': 'time', 'style': 'width:25%;'},
date_format='%d/%m/%Y',
time_format="'%H:%M'"),
)
end_date = SplitDateTimeField(
label='Fin de l\'évènement (Date / Heure)',
widget=widgets.SplitDateTimeWidget(
date_attrs={'type': 'date', 'style': 'width:25%;'},
time_attrs={'type': 'time', 'style': 'width:25%;'},
date_format='%d/%m/%Y',
time_format="'%H:%M'"),
)
class Meta:
model = models.Event
fields = ('category', 'title', 'content', 'start_date', 'end_date', 'status', )
views.py :
def event_update_view(request, uuid):
event = Event.objects.get(uuid=uuid)
event_data = {
'category': event.category,
'title': event.title,
'content': event.content,
'start_date': event.start_date,
'end_date': event.end_date,
'status': event.status,
}
event_form = EventForm(initial=event_data)
event_update_form = EventUpdateForm()
photo_form = PhotoForm()
if request.method == 'POST':
event_form = EventForm(request.POST, instance=event)
event_update_form = EventUpdateForm(request.POST)
photo_form = PhotoForm(request.POST, request.FILES)
if all([event_form.is_valid() and event_update_form.is_valid() and photo_form.is_valid()]):
event = event_form.save()
event_update = event_update_form.save(commit=False)
event_update.event = event
event_update.updater = request.user
event_update.save()
photo = photo_form.save(commit=False)
photo.uploader = request.user
photo.save()
event.photos.add(photo)
event.save()
messages.success(request, NEWS_UPDATE_SUCCESS) # Adding a confirmation message
return redirect('event-detail', uuid=event.uuid)
context = {
'event': event,
'event_form': event_form,
'event_update_form': event_update_form,
'photo_form': photo_form,
}
return render(request, 'contents/event_update.html', context=context)
Кто-нибудь делал это раньше?