def edit_event(request, slug): instance = Event.objects.get(slug=slug) selected_categories = Event.get_category_names(instance.slug) print(selected_categories, "selected_categories") form = EventForm( request.POST or None, request.FILES or None, instance=instance) if request.method == 'POST': if form.is_valid(): event = form.save(commit=False) event.added_by = request.user default_time = "00:00:00" starts_at = request.POST.get('starts_at_time') or default_time ends_at = request.POST.get('ends_at_time') or default_time if request.POST.get('starts_at'): event.starts_at = get_datetime( request.POST.get('starts_at'), starts_at ) if request.POST.get('ends_at'): event.ends_at = get_datetime( request.POST.get('ends_at'), ends_at ) if request.FILES.get('cover_image'): event.cover_image = request.FILES.get('cover_image') event.save() categories = request.POST.getlist("category_select") if len(categories) != 0: event.category.clear() for current_category in categories: category = Category.objects.filter( name=current_category ) event.category.add(*list(category)) event.save() context = { 'success_message': "edited event" } return render(request, 'CRUDops/successfully.html', context) starts_date = None starts_time = None if instance.starts_at: starts_date = str(instance.starts_at.date()) starts_time = str(instance.starts_at.time()) ends_date = None ends_time = None if instance.ends_at: ends_date = str(instance.ends_at.date()) ends_time = str(instance.ends_at.time()), context = { 'form': form, 'categories': Category.objects.active(), 'editing': True, 'starts_date': starts_date, 'ends_date': ends_date, 'starts_time': starts_time, 'ends_time': ends_time, 'selected_categories': selected_categories } return render( request, 'events/create_event.html', context )