You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python-Django网站中实现未退货商品占比(safetycoef)计算

实现未退货商品百分比的两种方案

根据你的需求,未退货商品百分比的计算逻辑是:((销量 - 退货数) / 销量) × 100,以下是两种可行的实现方式:

方法一:在模型中添加计算属性(推荐)

把计算逻辑封装到商品模型里,模板直接调用即可,逻辑复用性更强。假设你的商品模型类是Phone,代码修改如下:

class Phone(models.Model):
    title = models.CharField(max_length=100)
    sales = models.IntegerField()
    returns = models.IntegerField()

    @property
    def safetycoef(self):
        # 处理销量为0的边界情况,避免除以零错误
        if self.sales == 0:
            return 0  # 也可根据业务需求返回100%或其他默认值
        # 计算未退货百分比并取整
        return round(((self.sales - self.returns) / self.sales) * 100)

修改后,你原来的模板代码不需要改动,{{phone.safetycoef }}%会直接显示正确的百分比。

方法二:直接在模板中计算

如果不想修改模型,也可以在模板内直接完成计算,需要注意处理销量为0的情况:

将模板中对应行替换为:

<p>{{ phone.title }} — reliabilty {% if phone.sales > 0 %}{{ ((phone.sales - phone.returns)|float / phone.sales) * 100|round }}{% else %}0{% endif %}%</p>

代码说明:

  • {% if phone.sales > 0 %}:判断销量是否大于0,防止出现除以零的错误
  • (phone.sales - phone.returns)|float:将差值转为浮点数,避免整数除法导致的精度丢失
  • * 100|round:计算百分比后取整,若需要保留小数,可改为|round:1保留一位小数

额外提醒

建议在后端对数据做校验,确保退货数不会大于销量,避免出现负数百分比的异常情况。

内容的提问来源于stack exchange,提问作者Toast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:40:32