Django: невозможно отобразить изменения времени в fullcalendar - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь отобразить изменения событий в моем полном календаре, но мои временные интервалы продолжают исчезать при обновлении страницы.

Я успешно изменяю размеры или перетаскиваю события.Как только я изменяю размер или удаляю изменения в моем событии в виде месяца, мои изменения сохраняются в моей базе данных, поэтому мои изменения отражаются в моем следующем обновлении.

Проблема заключается в том, что я изменяю размер и удаляю в режиме просмотра дня.Изменения моего времени отражаются в моей базе данных, но когда я перезагружаю страницу, временные интервалы возвращаются назад на весь день или с 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 теперь ложный).

Как ни странно, сделанные мной изменения отражаются на моей базе данных.Я просто не совсем уверен, почему мои изменения даты отражаются в полном календаре, а мои изменения времени - нет.

1 Ответ

0 голосов
/ 03 июня 2019

Кажется, я забыл добавить часть времени в свой шаблон. Формат должен выглядеть примерно так, как показано ниже, и все должно работать. '{{i.start_date | date: "Y-m-d"}} {{i.start_date | time: "H: i: s"}}

...