django - 修改django中的数据库

标签 django database save view

我是 django 的初学者。以下是我的考勤管理应用程序。 这是我的 models.py。

from django.db import models

class Subject(models.Model):
    subject_name = models.CharField(max_length=20)
    #attendance = models.ForeignKey(Attendance, on_delete = 
    models.DO_NOTHING)
    attendance = models.IntegerField(default=0)
    def __str__(self):
        return self.subject_name


class Section(models.Model):
    section_name = models.CharField(max_length=20)
    subject = models.ManyToManyField(Subject)
    def __str__(self):
        return self.section_name


class Student(models.Model):
    rollno = models.IntegerField()
    name = models.CharField(max_length=20)
    section = models.ForeignKey(Section, on_delete = models.DO_NOTHING, 
    default=0)
    def __str__(self):
        return str(self.rollno) + self.name 


class Teacher(models.Model):
    #teacher_name = models.CharField(max_length=20)
    section = models.ForeignKey(Section, on_delete=models.CASCADE)
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    #section_name = models.CharField(max_length=10)
    #subject_name = models.CharField(max_length=30)
    def __str__(self):
        return self.section.section_name+' '+self.subject.subject_name


class TeacherList(models.Model):
    teacher_name = models.CharField(max_length=20)
    teacher = models.ManyToManyField(Teacher)
    def __str__(self):
        return self.teacher_name

下面的行在views.py中不起作用

student = models.Student.objects.get(rollno = sroll)
student.section.subject.get(subject_name = 'java').attendance += 1
student.save()

当单击按钮添加学生的出勤时,将从模板调用此 View 。 上述代码中的考勤没有被修改。请帮帮我。

最佳答案

你正在拯救学生,而不是科目。

student = models.Student.objects.get(rollno = sroll)
subject = student.section.subject.get(subject_name='java')
subject.attendance += 1
subject.save()

或者,更好的是,直接一次性更新:

student.section.subject.filter(subject_name='java').update(attendance=F('attendance')+1)

而且根本不需要保存。

关于django - 修改django中的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51225647/

相关文章:

python - Django 中的两个查询集序列化为 JSON

c# - 使用 SaveFileDialog 后 GDI+ 的 Bitmap.Save() 发生一般错误

iphone - Plist 未从字典保存(保存到文档)

python - NOT NULL 约束失败 Django CreateView

python - 单击按钮并将当前时间和默认值保存在数据库中(Django)

python - Django Rest Framework 上传文件到方法

database - Sqlite3 从转储文件重新创建空数据库

php - 学说关联映射和 arrayCollection 持续错误

php - MYSQL中将DELETE语句重写为SELECT语句

python - 在 numpy.savetxt 中设置 fmt 选项