Как подсчитать сумму в выборе Джанго - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь найти общую сумму материальных затрат в столбцах, поскольку мне нужно выбрать сумму с помощью django.

Я попытался добавить, используя self.amount1+ self.amount2, но безрезультатно.

PO_STEEL_COST_CHOICES = (
    ('10000' ,'10000'),
    ('20000','20000'),
    ('30000','30000'),
    ('40000','40000'),
    )

PO_ELECTRICAL_MATERIAL_CHOICES = (
    ('10000' ,'10000'),
    ('20000','20000'),
    ('30000','30000'),
    ('40000','40000'),
    )

PO_SUBCONTRACTORS_CHOICES = (
    ('10000' ,'10000'),
    ('20000','20000'),
    ('30000','30000'),
    ('40000','40000'),
    )

class ProcurementTeam(models.Model):
    project_name = models.OneToOneField(Project, on_delete=models.DO_NOTHING)
    po_steel = models.FileField(upload_to='files/ProcurementTeam/posteel/%Y/%m/%d/', blank=True, null=True)
    po_steel_cost = models.CharField(max_length=120,choices=PO_STEEL_COST_CHOICES, default='None', blank=True)
    po_electrical_materials = models.FileField(upload_to='files/ProcurementTeam/poelectrical/%Y/%m/%d/', blank=True, null=True)
    po_electrical_materials_cost =models.CharField(max_length=120, choices=PO_ELECTRICAL_MATERIAL_CHOICES, default='None', blank=True)
    po_subcontractors = models.FileField(upload_to='files/ProcurementTeam/posubcontractor/%Y/%m/%d/', blank=True, null=True)
    po_subcontractors_cost = models.CharField(max_length=120, choices=PO_SUBCONTRACTORS_CHOICES, default='None', blank=True)
    posted_by = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING)
    is_approved = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return str(self.project_name)

    def total_material_cost(self):
        """Function to return total procurement PO cost"""
        total_procurpo = self.po_steel_cost + self.po_electrical_materials_cost + self.po_subcontractors_cost
        return total_procurpo

Я ожидаю, что выходной сигнал будет 40 000, учитывая, что я выбрал 10000, 20000 и 10000, но текущий выход составляет 100002000010000. Почему это происходит?

Ответы [ 2 ]

1 голос
/ 17 июня 2019

, поскольку параметры задаются как string в пределах quotes(''), поэтому они получают appended вместо added

total_procurpo = int(self.po_steel_cost) + int(self.po_electrical_materials_cost) +int(self.po_subcontractors_cost)
0 голосов
/ 22 июня 2019

Вы также можете попробовать с sum и map:

total_procurpo = sum(
    map(
        float,
        (
            self.po_steel_cost,
            self.po_electrical_materials_cost,
            self.po_subcontractors_cost,
        ),
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...