К списку категорий

  •   А я говорил нет ничего не ничего не возможного, реальные примеры.




  •   Описание

    Ну нечто подобное сделал )
    Как хорошо работать на свежую голову )

    ПОБЕДИЛ!!!
    ситуевина такая:

    на каждую категорию сделал свою функцию вызывающую функцию пагинатора передавая туда выборку в качестве аргумента
    возвращающую страницу и построчной выборкой и формой поиска
    /////////////////////////////////////////////////////////////////////////
     
    Обратите внимание Тахир пишет далее:
    Все с нуля приходится делать и html изучать по ходу дела )
     

    --
    © 2009-2015 Валерий Бовсуновский - Школа практики Django + Python.
     

     

    А я говорил нет ничего не ничего не возможного, реальные примеры.

     

     
    вот одна из функций:
    def models_all(request):
        qw_models = Model3D.objects.all()
        models = get_paginator(request, qw_models) # достаем списки страниц из пагинатора
        form = ModelFindForm()
    
        return render_to_response('model_all.html', {'models': models, 'form': form})
    
    форма поиска отправляет запрос на страницу  с функцией поиска:
    def find_model(request):
        if request.method == 'GET':
            form = ModelFindForm(request.GET)
            if form.is_valid():
                form.full_clean()
                d = form.cleaned_data
                words = d['tag']
                stroke, strokes = modify_stroke(words)
                qwcategory = Model3D.objects.all()      # выборка в которой будет производится поиск
                qw, qw_count = get_qwerty(stroke, strokes, qwcategory)
                models = get_paginator(request, qw)    # достаем списки страниц из пагинатора 
                form = ModelFindForm()
    
                return render_to_response('models_found.html', {
                    'form': form, 'models': models, 'qw_count': qw_count,
                    'words': words, 'qw': qw
                })
            else:
                form = ModelFindForm()
                return render(request, 'models_found.html', {'form': form})
        else:
            form = ModelFindForm()
            return render(request, 'models_found.html', {'form': form})
    
    Кстати тут  дну вещь заметил метод count() для QuerySet  не работает если QuerySet преобраховать во множество  а потом обратно в список, требует аргумент как при работе с обычными списками.
    поэтому использовал len(QuerySet) - отложил этот момент на попозже.
    
     я таким образом поиск делаю (пока таким):
    
    
    # преобразование пользовательского ввода
    def modify_stroke(words):
        words = words.replace('.', ',')
        words = words.split(',')
        print(words)
        stroke = []
        strokes = []
        for x in words:
            x = x.strip()
            if ' ' in x:
                xx = x.split(' ')
                xxx = []
                for i in xx:
                    i = i.replace(' ', '')
                    if i:
                        xxx.append(i)
                strokes.append(xxx)
            else:
                x = x.replace(' ', '')
                if x:
                    stroke.append(x)
        return stroke, strokes       # вывожу список единичных слов и список списков слов (словосочетаний)
    
    делаю выборку преобразовав выборки по ключам  в множества с последующим пересечением и объединением
    
    # получение требуемой выборки
    def get_qwerty(stroke, strokes, qwcategory):
        qw2 = set()
        qw3 = set()
    
        if stroke:
            for s in stroke:
                qw1 = qwcategory.filter(tags__icontains=s)
                qw1 = set(qw1)
                qw2 = qw1 | qw2
    
        if strokes:
            for s in strokes:
                qws = []
                for i in s:
                    qw = qwcategory.filter(tags__icontains=i)
                    qw = set(qw)
                    qws.append(qw)
                qq2 = qws[0]
                for s in range(len(qws)):
                    qw = qws[s]
                    qq2 = qw & qq2
    
                qw3 = qq2 | qw3
    
        qw = qw2 | qw3
        qw = list(qw)
        qw_count = len(qw)    # Не используйте len() с QuerySet если нужно узнатьколичество записей
                        # исп-ть оператор SQL SELECT COUNT(*), и Django предоставляет метод count() для этого
    
        return qw, qw_count 
    
    -- 
    © 2009-2015 Валерий Бовсуновский - Школа практики Django + Python.
    --- 

     



      Статья



      Код



      Рекомендации

    Узнать больше в ленте Twitter и подписаться на Ютуб, получать новые видео.





    2016-04-13 08:15:35+00:00



    К списку категорий