Я пытался реализовать своего рода простую систему проверки заказов на обслуживание с использованием администратора Django, в основном у меня было 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 и до сих пор не могу найти то, что ищу.