问题描述
我有以下工厂,它基本上根据生成的商品价格和数量动态计算 OrderLine
的总数:
class OrderLineFactory(factory.django.DjangoModelFactory):
class Meta:
model = OrderLine
product_id = factory.SubFactory(ProductFactory)
price = factory.LazyAttribute(lambda instance: Decimal(instance.product_id.price))
quantity = fake.random_int(min=1,max=10)
total = factory.LazyAttribute(lambda instance: Decimal(instance.product_id.price * instance.quantity))
@factory.post_generation
def order_total(object,create,extracted,**kwargs):
""" Everytime an OrderLine is created the order's
total will be updated """
if not create:
return
print("CALculaTING TOTAL")
print("Object TOTAL")
print(object.total)
order = Order.objects.get(pk=str(object.order_id))
print("ORDER total")
print(order.total)
order.total = Decimal(order.total + (object.total))
order.save()
class OrderFactory(factory.django.DjangoModelFactory):
class Meta:
model = Order
session_id = factory.Faker('uuid4')
OrderLine
中的 total 的结果总是小数点后小数点。这是一个测试对象的结果:
{"id": "661a2b77-5fca-40d9-b34a-ddafee87415c","session_id": “1742dbd5-e91a-4ef3-8eea-6ec4bd51d567”,“小计”:“0.00”,“总计”: "680.46","items": [{"product_id": 1,"price": "75.61","quantity": 9,“总计”:“680.46”}]}
total
应该是 680.49,而是 680.46。
在另一次运行中:
{"id": "10a79436-1bad-4d10-be61-5d87108bca0c","session_id": “d9649ebd-1f82-424d-b65c-0212641ae987”,“小计”:“0.00”,“总计”: "690.64","price": "76.74",“总计”:“690.64”}]}
它应该是 690.66,但我得到的是 690.64。
知道为什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)