Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在/orders/[<;class';decimal.ConversionSyntax';>;]时的无效操作_Django_Django Models_Django Rest Framework_Django Forms_Django Views - Fatal编程技术网

Django 在/orders/[<;class';decimal.ConversionSyntax';>;]时的无效操作

Django 在/orders/[<;class';decimal.ConversionSyntax';>;]时的无效操作,django,django-models,django-rest-framework,django-forms,django-views,Django,Django Models,Django Rest Framework,Django Forms,Django Views,我打算把交货成本加到项目的总价中,但它不起作用。这两个字段都是十进制,但它在/orders/[]处抛出此错误无效操作。这里是交货价格模型 回溯 File "/home//venv/lib/python3.7/site-packages/rest_framework/fields.py", line 1115, in to_representation value = decimal.Decimal(str(value).strip()) decimal.InvalidOperatio

我打算把交货成本加到项目的总价中,但它不起作用。这两个字段都是
十进制
,但它在/orders/[]处抛出此错误
无效操作。这里是交货价格模型

回溯

  File "/home//venv/lib/python3.7/site-packages/rest_framework/fields.py", line 1115, in to_representation
    value = decimal.Decimal(str(value).strip())
decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]
它是
FK
Order
模型

序列化程序.py

class DeliveryPrice(models.Model):
    shipping_name = models.CharField(max_length=255, blank=True, null=True)
    shipping_charge = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
class OrderSerializer(serializers.ModelSerializer):
    price_of_delivery = serializers.DecimalField(max_digits=10, decimal_places=2)

class Meta:
    model = Order
    fields = ['phone', 'address', 'price_of_delivery']

def create(self, validated_data):
    price_of_delivery = validated_data.pop('price_of_delivery')
    price_instance, created = DeliveryPrice.objects.get_or_create(shipping_charge=price_of_delivery)
    order_instance = Order.objects.create(**validated_data, price_of_delivery=price_instance)
    return order_instance
total_aggregated_dict = cart.aggregate(
            total_price=Sum(F('quantity') * F('product__price'), output_field=DecimalField()))
        print(total_aggregated_dict)
        order_total = total_aggregated_dict['total_price']
        delivery_price = self.request.data['price_of_delivery']
        print(delivery_price)
        final_total = Decimal(order_total) + Decimal(delivery_price)
        print(final_total)
        order = serializer.save(user=user, total_price=final_total)
视图.py

class DeliveryPrice(models.Model):
    shipping_name = models.CharField(max_length=255, blank=True, null=True)
    shipping_charge = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True)
class OrderSerializer(serializers.ModelSerializer):
    price_of_delivery = serializers.DecimalField(max_digits=10, decimal_places=2)

class Meta:
    model = Order
    fields = ['phone', 'address', 'price_of_delivery']

def create(self, validated_data):
    price_of_delivery = validated_data.pop('price_of_delivery')
    price_instance, created = DeliveryPrice.objects.get_or_create(shipping_charge=price_of_delivery)
    order_instance = Order.objects.create(**validated_data, price_of_delivery=price_instance)
    return order_instance
total_aggregated_dict = cart.aggregate(
            total_price=Sum(F('quantity') * F('product__price'), output_field=DecimalField()))
        print(total_aggregated_dict)
        order_total = total_aggregated_dict['total_price']
        delivery_price = self.request.data['price_of_delivery']
        print(delivery_price)
        final_total = Decimal(order_total) + Decimal(delivery_price)
        print(final_total)
        order = serializer.save(user=user, total_price=final_total)
这就是我迄今为止所做的一切。需要明确的是,首先,用户将产品添加到购物车中,然后他们可以在填写订单字段(地址、电话号码等)时进行订购。他们还可以选择运费,并且所选运费应添加到总价中。但在我的情况下,它不工作,我得到上面显示的错误。我如何处理这个问题?需要帮忙吗?提前谢谢

已解决


我的错误是使用序列化程序,因为我正在将交付的
price\u设置为
DecimalField
,并且在视图中我也转换为
Decimal
。我刚刚将
序列化程序。DecimalField
更改为
序列化程序。CharField
一切正常。

添加错误回溯您还可以添加
订单
模型吗?当您使用
“所有”
fields@NalinDobhal请喝一杯look@ArturSiepietowskiplaese看看我知道OP现在已经解决了这个问题,但是在mysql的位字段中存储一个布尔值会导致错误。当我返回值时,它将其视为十进制。