【问题标题】:How to use decimal quantity for Django-Shop CartItems如何为 Django-Shop CartItems 使用十进制数量
【发布时间】:2021-11-18 14:18:48
【问题描述】:

您好,我正在尝试编辑 Django-Shop 的演示。

我使用 Python 3.7.5 安装了 Django-Shop 1.2.4 和 Django 3.0.14 版本。

就我而言,我也想按重量销售产品。正如documentation中所说,我必须重写CartItem

from django.db import models
from django.utils.translation import ugettext_lazy as _

from shop.models import cart


class CartItem(cart.BaseCartItem):
    quantity = models.DecimalField(_("Cart item quantity"), decimal_places=3, max_digits=3)

我在models.py 中导入了这个 CartItem。之后,我还得重写OrderItem类中的数量。

class OrderItem(BaseOrderItem):
    quantity = models.DecimalField(_("Ordered quantity"), decimal_places=3, max_digits=3)
    # quantity = models.PositiveIntegerField(_("Ordered quantity"))
    canceled = models.BooleanField(_("Item canceled "), default=False)

    def populate_from_cart_item(self, cart_item, request):
        super().populate_from_cart_item(cart_item, request)
        # the product's unit_price must be fetched from the product's variant
        try:
            variant = cart_item.product.get_product_variant(
                product_code=cart_item.product_code)
            self._unit_price = Decimal(variant.unit_price)
        except (KeyError, ObjectDoesNotExist) as e:
            raise CartItem.DoesNotExist(e)

现在我可以毫无问题地运行服务器,但我无法向购物车添加东西。

我不知道该怎么办......

【问题讨论】:

    标签: python django e-commerce django-cms django-shop


    【解决方案1】:

    如果将models.DecimalField换成models.FloatField,产品就可以按预期加入购物车了。显然,其中明确提到 DecimalField 的文档是错误的。

    【讨论】:

    • 请更改文档并创建拉取请求。
    猜你喜欢
    • 2017-02-26
    • 2010-11-10
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多