【发布时间】:2023-02-03 15:52:16
【问题描述】:
我们有两个模型类:学生和讲师. Student 和 Instructor 是一对多的关系。
楷模:
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)。
Student-2(Rank-1)的分数将增加如下( 1 * 2 ),
Student-3(Rank-2)的分数将增加如下( 2 * 2 ),
Student-3(Rank-3)的分数增加如下( 3 * 2 )
我曾尝试做类似以下的事情 -
Student.objects.filter(instructor=instructor_ID).order_by('order').update(mark = F('mark') + 2 )
这样只需将 2 添加到每个学生。但是我们想用上面提到的公式 - student's ranking * 2 来增加分数。你能帮我在 django 中实现这个吗?
【问题讨论】:
标签: python django django-models django-rest-framework django-queryset