Django Admin: поле, которое суммирует выбранные объекты из поля множественного выбора на странице формы добавления / изменения - PullRequest
0 голосов
/ 25 августа 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...