2017-05-06 108 views
0

我想实现我的应用程序搜索功能,但我有它的调用类型错误。我加入这个错误Django的搜索功能问题

views.py

from django.shortcuts import render 
from .models import Games,Game_detail,Order 
from django.shortcuts import render,get_object_or_404,redirect 
from django.views.generic import ListView,DetailView,CreateView 
from django.db.models import Q 
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 

class IndexView(ListView): 
    template_name ='games/list.html' 
    context_object_name = 'all_games' 
    model = Games 

    def get_queryset(self,request): 
     query = request.GET.get("q") 
     if query: 
       queryset_list = queryset_list.filter(
       Q(name__icontains=query)| 
       Q(platform__icontains=query)| 
       Q(genre__icontains=query) | 
       Q(language__icontains=query) 
       ).distinct() 
     return Games.objects.all() 

列表的画面的错误。 HTML

<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity=" sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
<title>Page Title</title> 
</head> 
<body> 
</body> 
</html> 
<form method='GET' action=''> 
<input type='text' name='q' placeholder='Wyszukaj' value='{{ request.GET.q }}'/> 
<input type='submit'class="btn btn-default" value='Szukaj' /> 
</form> 
<table class="table table-striped"> 
<thead> 
    <tr> 
     <th>Nazwa</th> 
     </th></th> 
      <th>Platforma</th> 
      <th>Gatunek</th> 
      <th>Język</th> 
     </tr> 
    </thead> 
<tbody> 
{% for obj in object_list%} 
<tr> 
<td><a href ='{%url "detail" pk=obj.pk%}'>{{obj.name}}</a></td> 
<td>{{obj.platform}}</td> 
<td>{{obj.genre}}</td> 
<td>{{obj.language}}</td> 
</tr> 
{% endfor %} 
</tbody> 
</table> 

Model.py

from django.db import models 
class Games(models.Model): 
    name = models.CharField(max_length=250) 
    platform = models.CharField(max_length=500) 
    genre = models.CharField(max_length=100) 
    language = models.CharField(max_length=100) 
    image = models.ImageField(upload_to='Images_game',default='') 
    # def __str__ (self): 
    # return self.Name 

    class Game_detail(models.Model): 
     game = models.ForeignKey(Games,on_delete=models.CASCADE) 
     subcryption = models.TextField() 
     publisher = models.CharField(max_length=250) 
     date_of_publish = models.DateField() 

    class Order(models.Model): 
     person_name = models.CharField(max_length=24) 
     person_surname = models.CharField(max_length=24) 
     street = models.CharField(max_length=45) 
     city= models.CharField(max_length=45) 

Error issue

我想写这个4值的搜索。我想问题依赖于返回函数可能是错误的。

回答

1

您有一个get_queryset方法的错误签名。它不接受request作为第二个参数。您可以从self变量访问request

你可以找到get_queryset方法

+1

就解决queryset_list问题的Django文档中的详细信息 - 我可以删除我的答案。或者它最终会看起来一样:) – karthikr

+0

很好的接收!谢谢 –

+1

和缩进。 – karthikr