我们有两个模型类:学生和指导员。学生和教师之间有一对多的关系。
模型:
class Student(models.Model):
instructor = models.ForeignKey(Board, on_delete=models.CASCADE, related_name="students")
name = models.CharField(max_length=255)
roll = models.IntegerField()
mark = models.DecimalField(decimal_places=8, max_digits=16, default= 0.0)
class Instructor(models.Model):
name = models.CharField(max_length=255)序列化程序:
class StudentSerializer(serializers.ModelSerializer):
class Meta:
fields = ('id', 'name', 'roll', 'mark')
model = Student
class InstructorSerializer(serializers.ModelSerializer):
students = StudentSerializer(many=True, read_only=True)
class Meta:
fields = ('id', 'name', 'students')
model = Instructor我们有一个低强度的场景,老师想用一个疯狂的公式来增加每个学生的分数:student's ranking * 2。这意味着,我们必须为相应的教师id更新每个学生表的行。
,例如
有3名学生-学生1:(姓名:"A",卷: 3,分数: 10);
学生2:(姓名:"B",卷: 4,分数: 15);
学生3:(姓名:"B",卷: 4,分数: 13);
术后:
学生分数排名:
学生2(等级1),学生3(2级),学生1(3级)。
学生-2(等级-1)的分数将增加如下(1*2 ),
学生-3(等级-2)的分数将增加如下(2*2 ),
学生-3(等级-3)的分数将增加如下(3*2)
我试着做了如下的事情-
Student.objects.filter(instructor=instructor_ID).order_by('order').update(mark = F('mark') + 2 )这样只需在每个学生中增加2个。但是我们想用上面提到的公式- student's ranking * 2来增加分数。你能帮我在django完成这个任务吗?
发布于 2022-11-27 15:14:21
试试这个:
all_students=Student.objects.filter(instructor=instructor_ID).order_by('order')
for i, val in enumerate(all_students):
val.mark = (i+1)*2)
val.save()产出将是:
Student 1(...other fields, mark=2)
Student 2(... Other fields, mark=4)
Student 3(... Other fields, mark=6)https://stackoverflow.com/questions/74590938
复制相似问题