鉴于我必须使用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
考虑到我选择了10000、20000和10000,但现在的输出是100002000010000,我希望输出为40,000。为什么会发生这种情况?
答案 0 :(得分:1)
由于选项在string
中以quotes('')
的形式给出,因此它们得到appended
而不是得到added
total_procurpo = int(self.po_steel_cost) + int(self.po_electrical_materials_cost) +int(self.po_subcontractors_cost)
答案 1 :(得分:0)
您还可以尝试使用sum
和map
:
total_procurpo = sum(
map(
float,
(
self.po_steel_cost,
self.po_electrical_materials_cost,
self.po_subcontractors_cost,
),
)
)