В момента преобразувам въз основа на функциите си изгледи в базирани на класа изгледи. В моя шаблон получавам стойност чрез input
маркер.
<input name="search_text" type="text">
След получаване на стойността, обработвам със стойността като следната във FBV.
def search(request):
search_text = request.GET.get("search_text")
search_stores = Store.objects.filter(Q(businessName__icontains=search_text) | Q(mKey__icontains=search_text))
Но сега искам да преобразувам кодовете в CBV. Как мога да направя това?
UPDATE
def search(request):
search_text = request.GET.get("search_text")
sorter = request.GET.get("sorter")
if not sorter:
sorter = "popularity"
if search_text:
search_stores = Store.objects.filter(Q(businessName__icontains=search_text) | Q(mKey__icontains=search_text))
if sorter == "businessName":
search_stores = search_stores.order_by(sorter)
else:
search_stores = search_stores.order_by(sorter).reverse()
else:
search_stores = ""
for store in search_stores:
store.mKey = store.mKey.split(" ")
return render(request, "boutique/search.html", {
"search_stores": search_stores,
"search_text": search_text,
"sorter": sorter,
})
Отговори:
2 за отговор № 1Ето вашето решение като използвате ListView
from django.views.generic import ListView
class SearchView(ListView):
template_name = "template.html"
model = Store
def get_queryset(self):
search_text = self.kwargs["search_text"]
object_list = self.model.objects.filter(Q(businessName__icontains=search_text) | Q(mKey__icontains=search_text))
return object_list