Я пытаюсь отобразить изменения событий в моем полном календаре, но мои временные интервалы продолжают исчезать при обновлении страницы.
Я успешно изменяю размеры или перетаскиваю события.Как только я изменяю размер или удаляю изменения в моем событии в виде месяца, мои изменения сохраняются в моей базе данных, поэтому мои изменения отражаются в моем следующем обновлении.
Проблема заключается в том, что я изменяю размер и удаляю в режиме просмотра дня.Изменения моего времени отражаются в моей базе данных, но когда я перезагружаю страницу, временные интервалы возвращаются назад на весь день или с 12:00 до 01:00 (в зависимости от того, является ли мой allDay истинным или ложным).
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
defaultView: 'month',
weekNumbers: 'true',
editable: true,
selectable: true,
eventLimit: true, // allow "more" link when too many events
showNonCurrentDates: true,
dayClick: function(date) {
new_date = date.getFullYear() + '-' + date.getMonth() + '-' + date.getDate();
var view = $('#calendar').fullCalendar('getView');
$('#calendar').fullCalendar('gotoDate',date);
$('#calendar').fullCalendar('changeView', 'agendaDay');
},
events: [
{% for i in events %}
{
id: "{{ i.id }}",
title: "{{ i.event_name}}",
start: '{{ i.start_date|date:"Y-m-d" }}',
end: '{{ i.end_date|date:"Y-m-d" }}',
allDay: {{ i.all_day|lower }},
url: '/world'
},
{% endfor %}
],
eventClick: function(event, element) {
event.title = "CLICKED!";
$('#calendar').fullCalendar('updateEvent', event);},
eventDrop: function(event, element){
alert("Event is now " + event.start + " " + event.end)
var url = 'update_event';
var event_start = event.start;
var event_end = event.end;
var js_timestamp_start = event_start.getTime() / 1000;
if (event_end != null) {
var js_timestamp_end = event_end.getTime() / 1000;
}
$.ajax({
url: url,
data: {
'event_id': event.id,
'event_title': event.title,
'event_start': js_timestamp_start,
'event_end': js_timestamp_end,
'event_allDay': event.allDay},
success: function (data) {
alert("Success!") },
error:
function(xhr){
alert(xhr.statusText)
return false;}
});
},
eventResize: function(event, element){
alert("Event is now " + event.start + " " + event.end)
var url = 'update_event';
var event_start = event.start;
var event_end = event.end;
var js_timestamp_start = event_start.getTime() / 1000;
if (event_end != null) {
var js_timestamp_end = event_end.getTime() / 1000;
}
$.ajax({
url: url,
data: {
'event_id': event.id,
'event_title': event.title,
'event_start': js_timestamp_start,
'event_end': js_timestamp_end,
'event_allDay': event.allDay},
success: function (data) {
alert("Success!") },
error:
function(xhr){
alert(xhr.statusText)
return false;}
});
},
}); // end #calendar
})
</script>
def full_calendar(request):
all_events = Events.objects.all()
date_form = DateForm
myr_form = MonthYearForm
context = {
"events": all_events,
"get_event_types": get_event_types,
"date_form" : date_form,
"myr_form" : myr_form
}
return render(request, 'world/fullcalendar.html', context)
def update_event(request):
event = None
event_id = request.GET.get('event_id')
event_start = request.GET.get('event_start')
event_end = request.GET.get('event_end')
event_title = request.GET.get('event_title')
event_allDay = request.GET.get('event_allDay')
event_allDay = event_allDay.capitalize()
python_date_start = datetime.fromtimestamp(int(event_start))
if event_end is not None:
python_date_end = datetime.fromtimestamp(int(event_end))
else:
python_date_end = python_date_start
#From what I remember here, event end is null, it's because start and
#end is the same
event = Events.objects.get(id=event_id)
event.event_name = event_title
event.start_date = python_date_start
event.end_date = python_date_end
event.all_day = event_allDay
event.save()
context = {"event": event}
return render(request, 'world/update_event.html', context)
ИтакЕсли у меня есть событие, которое проводится весь день, то я изменило его с 10:00 до 17:00, я ожидаю, что мое событие будет отображаться с 10:00 до 17:00 при обновлении.Вместо этого я получил 12:00 - 1:00 (потому что мой allDay теперь ложный).
Как ни странно, сделанные мной изменения отражаются на моей базе данных.Я просто не совсем уверен, почему мои изменения даты отражаются в полном календаре, а мои изменения времени - нет.