не отображать количество вводимых данных - PullRequest
0 голосов
/ 27 мая 2020
from django.db import models

class Product(models.Model):
    title = models.CharField(max_length=120)
    description = models.TextField()
    sell_price = models.DecimalField(max_digits=100, decimal_places=2)
    buy_price = models.DecimalField( max_digits=100, decimal_places=2)
    qty = models.IntegerField()
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    active = models.BooleanField( default = True)
    def __str__(self):
        return self.title


class Cart(models.Model):
    #user = models.ForeignKey(User, on_delete=models.CASCADE)
    products = models.ManyToManyField(Product, null=True, blank=True)
    total = models.DecimalField( null=True, max_digits=100, decimal_places=2)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    active = models.BooleanField( default = True)
    def __str__(self):
        return "Cart id: %s" %(self.id)

и view.py

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect
from django.urls import reverse
from app1.models import Product, Cart

def cart(request):
    qty= request.GET.get('qty')
    try:
        the_id = request.session["cart_id"]
    except:
        the_id = None
    if the_id:
        cart = Cart.objects.get(id=the_id)
        context = {'cart':cart, 'qty':qty}
    else:
        empty_message = 'Your cart is Empty, please keep your shopping'
        context = {'empty':True, 'empty_message':empty_message}
    return render(request, 'cart.html', context)

def add_to_cart(request, pk):
    request.session.set_expiry(12000)
    try:
        qty = request.GET.get['qty']
        update_qty = True
    except:
        qty = None
        update_qty = False
    try:
        the_id = request.session["cart_id"]
    except:
        new_cart = Cart()
        new_cart.save()
        request.session["cart_id"] = new_cart.id
        the_id = new_cart.id

    cart = Cart.objects.get(id=the_id)
    try:
        product = Product.objects.get(pk=pk)
    except Product.DoesNotExist:
        pass

    if update_qty and qty:
        if int(qty)==0:
            cart.delete()
        else:
            product.quantity = qty
            product.save()
    else:
        pass

    if not product in cart.products.all():
        cart.products.add(product)
    qty = request.GET.get('qty')
    new_total = 0.00
    for item in cart.products.all():
        item.qty = qty
        print(item.qty)
        new_total += float(item.sell_price) * int(item.qty)
    request.session['items_total'] = product.cart_set.count()
    cart.total = new_total
    cart.save()
    print(qty)
    return HttpResponseRedirect(reverse('cart'))

и шаблон корзины:

<body>
    <a href="{% url 'home' %}">Home</a>
    <table class="table">
        <thead>
            <th>product name</th>
            <th>product price</th>
            <th>Qty</th>
            <th></th>
            {% for item in cart.products.all %}
            <tr>
                <td>{{ item.title }}</td>
                <td>{{ item.sell_price }}</td>
                <td>{{ item.qty }}</td>
                <td><a href="{% url 'remove-cart' item.pk %}">Remove</a></td>
            </tr>
            {% endfor %}
            <tfoot>
            <tr>
                <td></td>
                <td>CART TOTAL = {{ cart.total }}</td>
            </tr>
            </tfoot>
        </thead>
    </table>
</body>

item.qty почти отображает количество 1, и я ввожу 2 в форму продукта для количества , снова отображение 1 в таблице тележки. но функция totalcart соответствует. это товар. html

<body>
    <h1>Name of Product:</h1>
    <ul>
        <li>Name = {{ product.title }}</li>
        <li>Price = {{ product.sell_price }}</li>
        <li>Description = {{ product.description }}</li>
    </ul>
    <form method="GET" action="{% url 'add-cart' product.pk %}">
        <input name="qty" type="number" value="1">
        <input type='submit' value="Add To CART">
    </form>
    <a href="{% url 'add-cart' product.pk %}">Add To Cart</a>
</body>

в результате в корзине. html показывает таблицу, в которой есть количество деталей, которые состоят из названия продукта и цены продажи продукта, а также количества продукта и корзины. итого все коэффициент отображения истина, но product.qty отображает почти номер 1

...