Сокрытие товаров от главной страницы, если в вашей корзине - PullRequest
0 голосов
/ 15 января 2020

Я очень шаткий с django и Python, но я делаю сайт электронной коммерции из вторых рук (например, ebay), и я изо всех сил пытаюсь сделать что-то, что, я уверен, просто:

Если элемент был добавлен в вашу корзину, и вы продолжаете просмотр, я не хочу, чтобы они могли видеть этот элемент. Это связано с тем, что каждый элемент уникален, поэтому его повторное отображение может означать добавление его снова, что не имеет смысла!

До сих пор я мог скрывать собственные элементы пользователей, но я просто могу Я не могу разобраться с этой частью.

Вот мой код:

views.py для предметов:

def get_items(request):
    """Create a view that will return a list of all items and render them
    to the 'items.html' template"""
    user = request.user
    if request.user.is_authenticated():
        items = Item.objects.exclude(owner=user).filter(date_added__lte=timezone.now
            ()).order_by('-date_added')
    else:
        items = Item.objects.filter(date_added__lte=timezone.now
            ()).order_by('-date_added')
    return render(request, "items.html", {"items" : items, "profile": user})

Корзина views.py

def view_cart(request):
    """
    A view to render cart contents
    """
    return render(request, "cart.html")

def add_to_cart(request, id):
    """
    A view to add item to cart
    """
    cart = request.session.get('cart', [])
    if id in cart:
        cart[id] = int(cart[id])
        print("already in list - this will not add another")
    else:
        cart[id] = cart.get(id)
        print("not Found")

    request.session['cart'] = cart

return redirect(reverse('view_cart'))

Дайте мне знать, если вам нужно что-нибудь еще, любая помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Вы можете запросить корзину и получить идентификаторы продуктов из корзины, а затем использовать их в исключении следующим образом.

cart_products = ["1", "56"] #<--  Create a list of id'd of products in your user's cart and use it as a variable or directly in query.

См. __ в используемый метод сделать поиск по пк.

items = Item.objects.exclude(owner=user, id__in=cart_products).filter(date_added__lte=timezone.now
        ()).order_by('-date_added')
0 голосов
/ 15 января 2020

Если элемент получает пользовательский объект, когда он попадает в корзину, возможно, __isnull работает для вас:

items = Item.objects.exclude(owner__isnull=False).filter(date_added__lte=timezone.now
            ()).order_by('-date_added')
...