Преобразование кодов из FBV в CBV в Django Views - PullRequest
0 голосов
/ 07 мая 2018

В настоящее время я конвертирую свои функциональные представления в представления на основе классов. В моем шаблоне я получаю значение через тег 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,
    })

1 Ответ

0 голосов
/ 07 мая 2018

Вот ваше решение с использованием 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
...