Momentálne prevádzam svoje funkčné pohľady na triedne. Na svojej šablóne dostanem hodnotu prostredníctvom input
tag.
<input name="search_text" type="text">
Po získaní hodnoty spracujem s hodnotou ako je táto vo 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))
Ale teraz chcem previesť kódy na CBV. Ako to môžem spraviť?
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,
})
odpovede:
2 pre odpoveď č. 1Tu je vaše riešenie, ktoré používate 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