Django Admin:一个用于对添加/更改表单页面上的多选框中的选定对象求和的字段

时间:2018-08-25 17:05:25

标签: django django-templates django-admin cart

我试图使用Django Admin实现一种简单的服务订单结帐系统,基本上我有2个模型:Service和Service_Order:

class Service(models.Model):
   name = models.CharField(max_length=20)
   price = models.DecimalField(max_digits=10, decimal_places=2, default=None)

   def __str__(self):
       return '%s - %s' % (self.name, self.price)

class Service_Order(models.Model):
   order_id = models.CharField(max_length=5)
   client_name = models.CharField(max_length=50)
   services = models.ManyToManyField(Service)
   total_price = models.DecimalField(max_digits=10, decimal_places=2, default=None) ### PLACEHOLDER ###

    def __str__(self):
        return self.order_id

我希望“添加服务订单”模板基本上像购物车一样,您可以在其中选择多个有价格的服务,最初我是使用多对一关系(一个服务订单可以有多个服务),但是相反,我使用的是“多对一”关系,因为“ filter_horizo​​ntal”选项使管理界面具有吸引力并且易于使用(我可以从左侧的框中选择并添加服务,然后将它们移至右侧的框),像这样:

https://i.stack.imgur.com/2FR98.png

现在我的问题是,我想在右侧框中提供一个用于汇总和显示服务价格总和的字段,这可能是一个我可以称为total_price的字段,我将其作为DecimalField在我的模型中(目前为占位符)。在图像所示的示例中,total_price将显示34,这是服务A,E和H的总和。

有人知道如何执行此操作吗?如果尚未在右侧框中选择的服务尚未添加到数据库中,则可以在这种情况下使用聚合/注释方法吗?我一直在浏览Django Admin文档,但仍然找不到我想要的东西。

0 个答案:

没有答案