2
我正在使用Django endles-pagination以無限滾動加載頁面。我也有一些過濾器根據標準過濾數據(例如,根據價格進行價格滑塊過濾)。現在,當頁面加載時,過濾器現在只從加載的頁面進行過濾,但我希望過濾它已加載或將要加載的所有頁面。有沒有辦法做到這一點(通過提出一些Ajax請求或什麼)?使用Django無盡分頁過濾器
對此的任何幫助將是偉大的。非常感謝。
我正在使用Django endles-pagination以無限滾動加載頁面。我也有一些過濾器根據標準過濾數據(例如,根據價格進行價格滑塊過濾)。現在,當頁面加載時,過濾器現在只從加載的頁面進行過濾,但我希望過濾它已加載或將要加載的所有頁面。有沒有辦法做到這一點(通過提出一些Ajax請求或什麼)?使用Django無盡分頁過濾器
對此的任何幫助將是偉大的。非常感謝。
要篩選數據,您必須在請求篩選查詢的視圖中重新定義get_queryset()
方法。
比如我請求當前的語言模板基於語言過濾博客日誌:
class Blog(AjaxListView):
context_object_name = "posts"
template_name = 'cgapp/blog.html'
page_template = 'cgapp/post_list.html'
def get_queryset(self):
if self.request.LANGUAGE_CODE == 'en': #request value of the current language
return News.objects.filter(language='en') #return filtered object if the current language is English
else:
return News.objects.filter(language='uk')
要過濾基於用戶輸入的查詢集,您可以參閱POST方法:
from app.forms import BlogFilterForm
class Blog(LoginRequiredMixin, AjaxListView):
context_object_name = "posts"
template_name = 'blog/blog.html'
page_template = 'blog/post_list.html'
success_url = '/blog'
def get_queryset(self): # define queryset
queryset = Post.objects.all() # default queryset
if self.request.method == 'POST': # check if the request method is POST
form = BlogFilterForm(self.request.POST) # define form
if form.is_valid():
name = form.cleaned_data['name'] # retrieve data from the form
if name:
queryset = queryset.filter(name=name) # filter queryset
else:
queryset = queryset
return queryset
def get_context_data(self, **kwargs):
context = super(Blog, self).get_context_data(**kwargs)
context['form'] = BlogFilterForm() # define context to render the form on GET method
return context
def post(self, request, *args, **kwargs): # define post method
return super(Blog, self).get(request, args, kwargs)
無盡的分頁應該可以正常工作。