如何在Django中过滤过去3天到今天的日期?

时间:2020-09-25 06:39:04

标签: django django-models django-forms django-views django-filter

我正在尝试从过去3天到今天的django中过滤数据,我可以使用2个输入框轻松地进行过滤,但是我想使用单个输入框进行数据过滤,为此我正在使用jquery,请让我知道我该怎么做。因为使用2个输入框对我来说很容易,但是使用单个输入框时我无法过滤数据(我在此单个输入框中选择fromto日期范围)。 ..

这是我的filters.py文件...

class MainFilter(django_filters.FilterSet):
order_date = django_filters.DateFilter(
    label= "By Date Range",
    method= 'order_filter',
    widget=forms.DateInput(
        attrs={
            'id': 'daterange',
        }
    )
)
class Meta:
    models = Order
    fields = ['order_date','daterange', 'start_date', 'end_date']

def order_filter(self, queryset, name, value):
    start = value.start
    end = value.stop
    return queryset.filter(start_date__gte=start, end_date__lte=end)

这是我的jquery代码...

 <script>
$(function() {
 $('#daterange').daterangepicker({
opens: 'left'
 }, function(start, end, label) {
console.log("A new date selection was made: " + start.format('YYYY-MM-DD') + ' to ' + 
end.format('YYYY-MM-DD'));
 });
});
</script>

这是我的viws.py文件...

def myview(request):
    datadis= MainFilter(request.GET, queryset=Order.objects.all())
    context = {'datadis':datadis}
    return render(request, 'mainpage.html', context)

这是我的mainpage.html文件...

 <form method="get">
        <div class="row row-xs">
            <div class="col-md-8">
            <label for="picker1">Select Status</label>
            {% render_field order.form.order_date class="form-control" %}
            </div>
            <div class="col-md-4 mt-3 mt-md-0">
                <label for="picker1"></label>
                <button class="btn btn-primary" style="margin-top:6px;">Submit</button>
            </div>
        </div>
    </form>

我陷入了困境,请帮助我,如果您有任何建议,请告诉我,我将在没有django_flter的情况下使用。

0 个答案:

没有答案