Django在会话中存储“get_queryset”

时间:2017-07-04 06:54:46

标签: django session filter django-views django-queryset

此帖已在以下某些评论后重写。

假设我创建了两个视图,“CheckInsListView”和“CheckOutsListView”。这些是在status =“CI”或status =“CO”上过滤的。

接下来就是我要显示用户指定日期的结果,所以我会创建一个表单“DateSelection”并使用“get_queryset”来匹配日期并显示结果。

我现在要做的是在会话中保存用户指定的日期。当我进入下一个视图“结账”时,我想使用会话中设置的日期再次用作过滤器。

除非用户输入新日期,否则会话中的日期应用作过滤器。

#views.py

class CheckInsListView(generic.ListView, FormMixin): 
form_class = DateSelection
model = Delivery
paginate_by = 10
queryset = Delivery.objects.filter(status='CI')
template_name = 'check-ins.html' 

def get_queryset(self):
    checkin_date = super(CheckInsListView, self).get_queryset()

    #Request date from session
    date_session = self.request.session.get('date_session')
    #Retrieve date from user input
    date_user = self.request.GET.get("date_selection")

    #check if session is populated
    if date_session:
        return checkin_date.filter(arrival_date__icontains=date_session)

    #if session is not populated, retrieve date from user input
    elif date_user:
        return checkin_date.filter(arrival_date__icontains=date_user)
        #register user input date_selection in session
        request.session['date_session'] = 'date_user'

    else:
        return checkin_date

class CheckOutsListView(generic.ListView, FormMixin): 
    form_class = DateSelection
    model = Orders
    paginate_by = 10
    queryset = Orders.objects.filter(status='CO')
    template_name = 'check-outs.html' 

表格

#forms.py

from django import forms

class DateSelection(forms.Form):
date_selection = forms.DateField(label="Date...")   

我不确定这是否可行,如果有人能给我推进正确的方向呢?

编辑05/05/2017

尝试使用以下内容检索模板中的会话,因此我知道日期未​​保存在会话中。

{% if request.session.date_session %}
    <h6>Date saved in session</h6>
{% endif %}

0 个答案:

没有答案