python - 如何在 Django models.py 中将多列值的总和定义为一列
问题描述
我有一个 django models.py 如下:
from django.db import models
class StudentList(models.Model):
name=models.CharField(max_length=200)
def __str__(self):
return self.name
class Marks_of_each_Student(models.Model):
student_name=models.ForeignKey(StudentList,on_delete=models.CASCADE)
s1=models.IntegerField()
s2=models.IntegerField()
s3=models.IntegerField()
Total=models.IntegerField(default=0,editable=False)
def calculate_total(self):
return self.s1+self.s2+self.s3
def save(self):
self.Total=self.calculate_total()
Total
当通过 shell 通过 ORM 命令输入时,我希望有一个包含 s1+s2+s3 值的列名。我尝试了以下方法,但没有成功。
from main_page.models import StudentList,Marks_of_each_Student
>>> x=StudentList(name="XYZ NAME")
>>> x.save()
>>> x1=Marks_of_each_Student(student_name=x,s1=90,s2=90,s3=90)
>>> x1.save()
>>> x1
<Marks_of_each_Student: Marks_of_each_Student object (1)>
>>> x1.Total
0
所有其他列都具有正确的值,但这Total
并没有给出正确的结果。
如何继续确保更改反映在Total
列中,并且我没有将这些数据保存Marks_of_each_Student
在 MySQL 表中。
谁能帮我??
解决方案
from main_page.models import StudentList, Marks_of_each_Student
#If you want to create a new object and save it to studentlist
>>> b = StudentList(name='Beatles Blog')
>>> b.save()
# Retrieve a object by name so you can save it to marks of each student
>>> instance = StudentList.objects.get(name="Beatles Blog")
>>> instance
>>> Beatles Blog
# Create a new object to marks of each student:
>>> obj = Marks_of_each_Student(student_name=instance, s1=90, s2=90, s3=90)
# calculate the total
>>> obj.Total = obj.s1 + obj.s2 + obj.s3
# Save the object
>>> obj.save()
>>>obj.Total
>>>270
消除:
def calculate_total(self):
return self.s1+self.s2+self.s3
def save(self):
self.Total=self.calculate_total()
推荐阅读
- r - 如何使用 tidyverse 子集化的数据使用基本 R 函数
- android - 为什么使用绑定类的视图引用标有@Nullable?
- azure - 带有 for_each 条件的模块组合
- linux - Buildroot:如何避免配置文件中出现“-dirty”?
- python - 熊猫数据帧中的长度不匹配与特定日期重新采样
- tabulator - 制表符使用行中另一个单元格的数据更新一个单元格
- r - 为什么 coord_flip() 比在 ggplot2 中的 aes() 中切换 `x` 和 `y` 参数更好?
- angular - 无法在 Angular 12.1.4 上安装 PrimeNg。npm 错误
- python - 在局部函数范围内使用的全局语句
- javascript - 如何根据特定逻辑更改字典中的项目 ID