首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增加表的每个值

增加表的每个值
EN

Stack Overflow用户
提问于 2022-11-27 14:42:22
回答 1查看 64关注 0票数 1

我们有两个模型类:学生指导员。学生和教师之间有一对多的关系。

模型:

代码语言:javascript
复制
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)

序列化程序:

代码语言:javascript
复制
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)

我试着做了如下的事情-

代码语言:javascript
复制
Student.objects.filter(instructor=instructor_ID).order_by('order').update(mark = F('mark') + 2 )

这样只需在每个学生中增加2个。但是我们想用上面提到的公式- student's ranking * 2来增加分数。你能帮我在django完成这个任务吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-27 15:14:21

试试这个:

代码语言:javascript
复制
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()

产出将是:

代码语言:javascript
复制
Student 1(...other fields, mark=2)

Student 2(... Other fields, mark=4)

Student 3(... Other fields, mark=6)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74590938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档