Я группирую некоторые данные в DataFrame
с pandas
, а затем отображаю их в моем TemplateView
. Я хочу указать диапазон дат в своем шаблоне, а затем повторно отфильтровать отфильтрованные данные на моей странице.
My model columns:
name
date_added
task
time_spent
date_added
указывает дату, когда пользователь с идентификатором name
отправил свои task
и time_spent
время, которое он потратил на задачу
Я группирую name
и task
, чтобы получить сумму time_spent
, поэтому
мои DataFrame
столбцы изday 0
до today
выглядит следующим образом:
name task time_spent
John programming 2 days 2 hours
мой желаемый фильтрованный DataFrame
в this month
будет выглядеть так:
name task time_spent
John programming 12 hours
В моем views.py
:
class ExamplePageView(TemplateView):
template_name = 'example.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
context = super(ExamplePageView, self).get_context_data(**kwargs)
func_to_group_data() # function that structs the grouped csv
my_data = pd.read_csv('some_place/data.csv')
context.update({'df': my_data.values})
return context
В моем example.html
Date_range_picker:
<div id="reportrange">
<i class="fa fa-calendar"></i>
<span id='date_summon'></span>
<i class="fa fa-caret-down"></i>
</div>
В моем test.js
код для date_range_picker
:
$(function() {
var start = moment().subtract(29, 'days');
var end = moment();
function cb(start, end) {
$('#reportrange #date_summon').html(start.format('D/M/YYYY') + ' - ' + end.format('D/M/YYYY'));
}
$('#reportrange').daterangepicker({
startDate: start,
endDate: end,
ranges: {
'Today': [moment(), moment()],
'This month': [moment().startOf('month'),moment().endOf('month')]
}
}, cb);
cb(start, end);
});
Я пыталсяизвлеките значения start
и end
, объявив форму в кнопке, хотя это не дает ожидаемых результатов при обновлении страницы. Я думал реализовать метод bs4
, но я считаю, что есть лучший и более легкий способ.