#python-3.x #fullcalendar #django-2.0
#python-3.x #полный календарь #django-2.0
Вопрос:
У меня возникли проблемы с вставкой, редактированием и удалением данных о событиях с помощью FullCalendar в веб-приложении, которое я разрабатываю
Я бы хотел, чтобы все работало на одном экране, то есть, когда пользователь выбирает даты в календаре, появляется модал для вставки значений (заголовок и даты), когда вы нажимаете на событие, появляется модал для редактирования события и кнопка для его удаления.
До сих пор я мог сделать следующее:
<script>
$(document).ready(function () {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
navLinks: true,
editable: true,
eventLimit: true,
selectable: true,
selectHelper: true,
select: function (start, end) {
$('#cadastrar #start').val(moment(start).format('DD/MM/YYYY HH:mm:ss'));
$('#cadastrar #end').val(moment(end).format('DD/MM/YYYY HH:mm:ss'));
$('#cadastrar').modal('show');
},
});
});
<script>
В шаблоне (agenda/agenda.html ) Я сделал это, что соответствует расписанию и режиму, который открывается при выборе любой даты в календаре.
<section class="content">
<div id='calendar'></div>
<div class="modal fade" id="cadastrar" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
aria-hidden="true">amp;times;</span></button>
<h4 class="modal-title text-center">Cadastrar Evento</h4>
</div>
<div class="modal-body">
<form role="form" action="" method="post">
{% csrf_token %}
<div class="form-group">
{{form.event_name}}
</div>
<div class="form-group">
{{form.start_date}}
</div>
<div class="form-group">
{{form.end_date}}
</div>
<div class="form-group">
{{form.event_type}}
</div>
</form>
</div>
</div>
</div>
</div>
</section>
В моделях.py создал следующее
class Event(models.Model):
event_name = models.CharField(max_length=255, null=True, blank=True)
start_date = models.DateTimeField(null=True, blank=True)
end_date = models.DateTimeField(null=True, blank=True)
event_type = models.CharField(max_length=10, null=True, blank=True)
def __str__(self):
return self.event_name
число просмотров
class AddEventView(CustomCreateView):
form_class = EventForm
template_name = "agenda/agenda.html"
permission_codename = 'add_event'
def get_context_data(self, **kwargs):
context = super(AddEventView, self).get_context_data(**kwargs)
return context
def get(self, request, *args, **kwargs):
return super(AddEventView, self).get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
self.object = form.save(commit=False)
self.object.save()
return self.form_valid(form)
return self.form_invalid(form)
class EventsListView(CustomListView):
template_name = 'agenda/agenda.html'
model = Event
context_object_name = 'all_eventos'
permission_codename = 'view_eventos'
def get_context_data(self, **kwargs):
context = super(EventosListView, self).get_context_data(**kwargs)
return context
class EditEventView(CustomUpdateView):
form_class = EventForm
model = Event
template_name = "agenda/agenda.html"
permission_codename = 'change_event'
def get_success_message(self, cleaned_data):
def get_context_data(self, **kwargs):
context = super(EditEventView, self).get_context_data(**kwargs)
return context
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form_class = self.get_form_class()
form = form_class(request.POST, instance=self.object)
if form.is_valid():
self.object = form.save()
return self.form_valid(form)
return self.form_invalid(form)
url-адреса
url(r'agenda/add/$',
views.AddEventView.as_view(), name='addeventview'),
url(r'agenda/$',
views.EventsListView.as_view(), name='listeventsview'),
url(r'agenda/edit/(?P<pk>[0-9] )/$',
views.EditEventView.as_view(), name='editeventview'),
Как мне вызвать modal, чтобы я мог регистрировать, редактировать и удалять события? Пока открывается модальный, но никакой информации не появляется. Проблема, конечно, в представлении, но как мне заставить его создавать, редактировать и удалять на той же странице и в том же режиме?
Комментарии:
1. Просто примечание:
moment(start).format
не нужно, потомуstart
что это уже момент.start.format
будет работать нормально. То же самое дляend
.2. Что касается «никакой информации не отображается»… с помощью чего создается HTML
{{form.start_date}}
? (Я не знаком с python / Django, только с FullCalendar). Я думаю, что, возможно$('#cadastrar #start')
, на самом деле не соответствует никаким элементам и, следовательно, не записывает значение в поле. Но я не знаю, какой идентификатор присваивается элементу HTML, который создается кодом python.3. Еще одно замечание:
$('#cadastrar #start')
также не требуется. Поскольку идентификаторы должны быть уникальными в HTML-документе, тогда вы должны иметь возможность просто написать$('#start')
, и он найдет элемент сid="start"
без необходимости сначала фильтровать до «кадастрового»