我试图使用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_horizontal”选项使管理界面具有吸引力并且易于使用(我可以从左侧的框中选择并添加服务,然后将它们移至右侧的框),像这样:
https://i.stack.imgur.com/2FR98.png
现在我的问题是,我想在右侧框中提供一个用于汇总和显示服务价格总和的字段,这可能是一个我可以称为total_price的字段,我将其作为DecimalField在我的模型中(目前为占位符)。在图像所示的示例中,total_price将显示34,这是服务A,E和H的总和。
有人知道如何执行此操作吗?如果尚未在右侧框中选择的服务尚未添加到数据库中,则可以在这种情况下使用聚合/注释方法吗?我一直在浏览Django Admin文档,但仍然找不到我想要的东西。