django - django 如何在views.py中使用减法
问题描述
我只想将总 SchoolFeesMasterList(Amount) 减去 StudentsEnrollmentRecord ESC(Amount)
这是我在views.py 中的代码
studentenroll = StudentsEnrollmentRecord.objects.filter(Student_Users=1)
total_paid = list(SchoolFeesMasterList.objects.aggregate(Sum('Amount')).values()) or 0
discount = studentenroll.ESC.amount - total_paid
这是我的models.py
class SchoolFeesMasterList(models.Model):
Education_Levels= models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE,blank=True)
Courses = models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE,blank=True)
Payment_Types = models.ForeignKey(PaymentType, related_name='+', on_delete=models.CASCADE,blank=True)
Display_Sequence = models.IntegerField(blank=True, null=True)
School_Fees_Type= models.ForeignKey(SchoolFeesType, related_name='+', on_delete=models.CASCADE,blank=True)
Amount = models.FloatField()
Amount_Per_Unit = models.FloatField()
Effectivity_Date_From = models.DateField(null=True,blank=True)
Effectivity_Date_To = models.DateField(null=True,blank=True)
Remark = models.TextField(max_length=500,blank=True)
class esc(models.Model):
Education_Levels = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE,blank=True,null=True)
Description = models.CharField(max_length=500, null=True,blank=True)
amount = models.FloatField()
class Meta:
verbose_name_plural = "Grade Level With/without ESC"
class StudentsEnrollmentRecord(models.Model):
Student_Users = models.ForeignKey(StudentProfile, on_delete=models.CASCADE,null=True)
School_Year = models.ForeignKey(SchoolYear, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Courses = models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
strands = models.ForeignKey(strand, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Section = models.ForeignKey(Section, related_name='+', on_delete=models.CASCADE, null=True,blank=True)
Payment_Type = models.ForeignKey(PaymentType, related_name='+', on_delete=models.CASCADE, null=True)
Discount_Type = models.ForeignKey(Discount, related_name='+', on_delete=models.CASCADE, null=True,blank=True)
Education_Levels = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE,blank=True,null=True)
ESC = models.ForeignKey(esc, on_delete=models.CASCADE,null=True,blank=True)
Remarks = models.TextField(max_length=500,null=True,blank=True)
这是错误
解决方案
您需要将其更改为:
studentenroll = StudentsEnrollmentRecord.objects.filter(Student_Users=1).last()
total_paid = SchoolFeesMasterList.objects.aggregate(Sum('Amount'))['Amount__sum'] or 0
discount = studentenroll.ESC.amount - total_paid
studentenroll
不指定元素是 QuerySet,而不是单个对象。您不能通过 QuerySet 访问字段,但您可以使用单个记录来访问。
推荐阅读
- git - 在 SourceTree 中签出旧版本后看不到最新的 GIT 提交,没有远程
- c# - Humanizer 无法在 C# 中对意大利语单词进行单数化或复数化
- java - 使用 java.net.URLEncoder 时不要编码欧元符号
- bash - 用于将当前迭代的值与上一次迭代的值进行比较的 Shell 脚本
- c# - 使用 EF Code First 的 AutoMapper 无限循环
- ios - 你如何以编程方式按下“使用照片”按钮
- vhdl - VHDL函数是否必须返回一个值?
- android - 自定义微调器 - 如何?
- android - 如果创建了大写字母,则 TextInput 值上的 toLowerCase 正在创建重复的文本
- html - 修复 Html 中的浮动框