首页 > 解决方案 > Django模型:def中的总和

问题描述

如何对模型中的字段求和?
我有 2 个整数字段,如果可能的话,想把它们加到 def 中?

class Blank_list(models.Model):
    expert = models.ForeignKey(Expert, null=True, on_delete=models.SET_NULL, related_name='blank_list')
    employee = models.ForeignKey(Employee, null=True, on_delete=models.SET_NULL, related_name='blank_list')
    c8_lvl_aw1 = models.IntegerField('К8: 1', choices=ANSWER_TYPES, default=0, blank=0)
    c8_lvl_aw2 = models.IntegerField('К8: 2', choices=ANSWER_TYPES, default=0, blank=0)
    
    def __str__(self):
        return "%s произвел оценку следующего сотрудника: %s" % (self.expert, self.employee)

    #that example what i'm expect
    def sum_all_fields(self):
        sum = c8_lvl_aw1 + c8_lvl_aw2 
        return sum

标签: pythondjango

解决方案


目前,这两个字段具有相同的名称。您应该将两者之一重命名,例如将第二个重命名为c8_lvl_aw1. 然后你可以总结self.c8_lvl_aw1self.c8_lvl_aw2

class Blank_list(models.Model):
    expert = models.ForeignKey(Expert, null=True, on_delete=models.SET_NULL, related_name='blank_list')
    employee = models.ForeignKey(Employee, null=True, on_delete=models.SET_NULL, related_name='blank_list')
    c8_lvl_aw1 = models.IntegerField('К8: 1', choices=ANSWER_TYPES, default=0, blank=0)
    c8_lvl_aw2 = models.IntegerField('К8: 2', choices=ANSWER_TYPES, default=0, blank=0)
    
    def __str__(self):
        return "%s произвел оценку следующего сотрудника: %s" % (self.expert, self.employee)

    #that example what i'm expect
    def sum_all_fields(self):
        return self.c8_lvl_aw1 + self.c8_lvl_aw2

注意:通常是 Django 模型,就像 Python 中的所有类都在PerlCase中命名,而不是snake_case,所以它应该是:BlankList而不是Blank_list.


推荐阅读