如何在Django中使用update_fields信号post_save

时间:2019-10-30 23:40:19

标签: django

我希望我的头衔足以误解我想说的话,否则请先对不起。

我在插入数据时没有问题,但是当管理员更新学生已记录的学生部分时,该怎么办?我只想更新当前数据而不添加其他数据

这是我在model.py(post_save)中的代码。

@receiver(post_save, sender=StudentsEnrollmentRecord)
def create(sender, instance, created, **kwargs):
    teachers = SubjectSectionTeacher.objects.filter(Courses=instance.Courses, Sections=instance.Section)
    if created and teachers.exists():
        StudentsEnrolledSubject.objects.create(
            # This should be the instance not instance.Student_Users
            Students_Enrollment_Records=instance,
            # The below is also not an instance of SubjectSectionTeacher
            Subject_Section_Teacher=teachers.first())

1 个答案:

答案 0 :(得分:0)

您的代码还有其他问题(为什么要使用CamelCase设置属性?),但是在Django中,如果要有条件创建一个新对象,则可以使用update_or_create()。示例:

StudentsEnrolledSubject.objects.update_or_create(
        pk=instance.pk, defaults={"enrollment_credits": enrollment_credits}
)

如果数据库中不存在StudentsEnrolledSubject,这将创建一个新的instance.pk对象。否则,它将更新现有实例的enrollment_credits