最近私はDjango Webアプリケーションの検索機能を実装しました。しかし、私はコードの動作を完全に理解していません。あなたはどのように "get_queryset" & "get_contest_data"(views.py)が一緒に働くんこのDjango検索機能の理解
- を何が起こっているかを説明し、具体的;:ていただけますか?
- 検索リクエスト(テンプレートから)が「get_queryset」に行く方法を知っていますか?
- 返品期限は何ですか?
ビュー:
from django.db.models import Q
class ProductListView(ListView):
model = Product
queryset = Product.objects.all()
def get_context_data(self, *args, **kwargs):
context = super(ProductListView, self).get_context_data(*args, **kwargs)
context["now"] = timezone.now()
context["query"] = self.request.GET.get("q") #None
return context
def get_queryset(self, *args, **kwargs):
qs = super(ProductListView, self).get_queryset(*args, **kwargs)
query = self.request.GET.get("q")
if query:
qs = self.model.objects.filter(
Q(title__icontains=query) |
Q(description__icontains=query)
)
try:
qs2 = self.model.objects.filter(
Q(price=query)
)
qs = (qs | qs2).distinct()
except:
pass
return qs
テンプレート
<form class="navbar-form navbar-left" method="GET" role="search" action='{% url "products" %}'>
<div class="form-group">
<input type="text" class="form-control" placeholder="Search" name="q">
</div>
</form>
で使用されるクエリセットであることをそのクエリセットを返すあなたの 'ProductListView'はLi'のサブクラスであることを確認すること
とdocs:https://docs.djangoproject.com/en/1.10/topics/class-basedを参照してください。 -views/intro /#using-class-based-views – allcaps