我是django的新手,对不起,如果问题是如此微不足道。有人能告诉我get_queryset()和get_context_data()函数之间的关系。
我有一个大海捞针serachview。我正在尝试制作"从#34;搜索工作。当我查找索引的完整单词时,我可以看到在get_queryset和context_list中的上下文中都找到了该单词。但是当我查找这个单词的前三个字母时,我可以看到get_queryset()找到它,但我在上下文中的object_list是空的。这2个功能如何工作以及为什么我有不同的搜索结果。
例如:在数据库中我的名字就像; " nametolookfor" 当我搜索" nametolookfor"时,一切都很好。 但是当我搜索" name" get_queryset可以找到它但不在上下文中
我的观点:
class MainPageView(SearchView):
""" View for main page """
template_name = "index.html"
form_class = PersonalSearchForm
model = PersonalProfileModel
@method_decorator(never_cache)
@method_decorator(csrf_protect)
@method_decorator(sensitive_post_parameters())
def dispatch(self, *args, **kwargs):
return super(MainPageView, self).dispatch(*args, **kwargs)
def post(self, request):
pass
def get_context_data(self, **kwargs):
context = super(MainPageView, self).get_context_data(**kwargs)
print context
return context
def get_queryset(self):
form_class = PersonalSearchForm
# further filter queryset based on some set of criteria
queryset = super(MainPageView, self).get_queryset()
form = form_class(self.request.GET or None)
if form.is_valid():
qr = form.cleaned_data['q']
print qr
queryset = queryset.filter(name__startswith=qr)
object_list = self.model.objects.filter(name__startswith=qr)
print queryset
return queryset
形式:
class PersonalSearchForm(SearchForm):
def search(self):
sqs = super(PersonalSearchForm, self).search()
if not self.is_valid():
return self.no_query_found()
return sqs