Django, Value Error: неверный литерал для int () с основанием 10: '' при попытке удалить объект из множества - PullRequest
0 голосов
/ 25 мая 2019

Я работаю над макетом сайта электронной коммерции, используя Django и Wagtail CMS.У меня проблемы с удалением товаров из приложения в корзину.

Я использую метод POST, который обновляет корзину на основе идентификатора продукта.Работает как тумблер, если объект в корзине: удалить, иначе: добавить.Он отлично работает на странице продукта, но когда я пытаюсь удалить на странице корзины, я получаю ValueError в / cart / update / invalid literal для int () с базой 10: '' Кажется, что идентификатор продукта не передается?

Это HTML-код кнопки, которая вызывает метод POST

<form method='POST' action='{% url "cart:update" %}' class="form"> {% csrf_token %}
        <input type="hidden" name="product_id" value="{{ self.id }}" />
        {% if incart %}
        <button type="submit" class="btn btn-danger btn-md my-0 p btn-sm" type="submit">
            Remove
        </button>
        {% else %}
        <button type="submit" class="btn btn-primary btn-md my-0 p" type="submit">Add
            to cart
            <i class="fa fa-shopping-cart"></i>

        </button>
        {% endif %}


</form>

переменная {{ self.id }} происходит из модели страницы продукта.использование модели страницы трясогузки.

модель страницы

class ProductDetailPage(Page):

    def get_url(self):
        return self.url


    productImage = models.ForeignKey(
        "wagtailimages.Image",
        blank = False,
        null = True,
        on_delete = models.SET_NULL
    )

    productPrice = models.FloatField(
        null = False,
        blank = False,
        default = 0

    )

    content_panels = Page.content_panels + [
        ImageChooserPanel("productImage"),
        FieldPanel("productPrice")
    ]

А это мой вид корзины

def cart_update(request):
    product_id = request.POST.get('product_id')
    if product_id is not None:
        product_obj = Product.objects.get(id=product_id)
        cart_obj, new_obj = Cart.objects.new_or_get(request)
        if product_obj in cart_obj.products.all():
            cart_obj.products.remove(product_obj)
        else:
            cart_obj.products.add(product_obj)
    return redirect("cart:home")
...