@David5

При использование пагинации столкнулся с ошибкой Cannot filter a query once a slice has been taken?

Доброго времени суток, я хотел сделать на сайте пагинацию но столкнулся с ошибкой, я понимаю что когда я вызываю BestPrice.objects.create и передаю в id_product(это поле связано ForeinKey) обьект из пагинатора, он не может с ним работать, подскажите как можно это сделать, вроде через функцию get_qwery. но я так до конца и не понял, заранее спасибо
views.py
def cards_product(request):


    cards_product =  CardsProduct.objects.filter(arhiv='active')
    cards_product =  Paginator(cards_product, 7).page(1)

   
    fn_best_price(cards_product.object_list)


def fn_best_price(cards_product):



    best_price_list = [] 
    for mon in Monitoring.objects.all():
        
        a = Monitoring.objects.filter(product_id=mon.product_id.id, shop_name=mon.shop_name).latest("id")

        if a.availability == 'в наличии':
            a = a.price.split("₽")[0].replace(' ', '')
            best_price_list.append(int(a))
    
        try:
            BestPrice.objects.filter(id_product=cards_product.get(id=mon.product_id.id)).delete()    
        except:
            pass
            
        BestPrice.objects.create(id_product=cards_product.get(id=mon.product_id.id), best_price=min(best_price_list, default="-"))    
     

    return
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
@David5 Автор вопроса
применил нарезку после вызова функции, не нашел других способов
вот так

def cards_product(request):


    cards_product =  CardsProduct.objects.filter(arhiv='active')
  

   
    fn_best_price(cards_product.object_list)

    cards_product =  Paginator(cards_product, 7).page(1)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы