django - 如何使用 django 信号 post_save 保存所有相关数据
问题描述
我只想如果管理员插入课程(ABM)和教育水平(11年级)和部分(编年史),它将在subjectsectionteacher中获取所有相关数据(第二张图片),它会自动保存到学生注册的科目(第三张图片)我的问题是只有一个数据保存。
这是我在 models.py 中的代码
class StudentsEnrollmentRecord(models.Model):
Student_Users = models.ForeignKey(StudentProfile, related_name='students', on_delete=models.CASCADE, null=True)
School_Year = models.ForeignKey(SchoolYear, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Courses = models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Section = models.ForeignKey(Section, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Payment_Type = models.ForeignKey(PaymentType, related_name='+', on_delete=models.CASCADE, null=True)
Education_Levels = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE, blank=True,null=True)
class SubjectSectionTeacher(models.Model):
School_Year = models.ForeignKey(SchoolYear, related_name='+', on_delete=models.CASCADE, null=True)
Education_Levels = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE, blank=True)
Courses = models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Sections = models.ForeignKey(Section, related_name='+', on_delete=models.CASCADE, null=True)
Subjects = models.ForeignKey(Subject, related_name='+', on_delete=models.CASCADE, null=True)
Employee_Users = models.ForeignKey(EmployeeUser, related_name='+', on_delete=models.CASCADE, null=True)
class StudentsEnrolledSubject(models.Model):
Students_Enrollment_Records = models.ForeignKey(StudentsEnrollmentRecord, related_name='+',
on_delete=models.CASCADE, null=True)
Subject_Section_Teacher = models.ForeignKey(SubjectSectionTeacher, related_name='+', on_delete=models.CASCADE,
null=True,blank=True)
@receiver(post_save, sender=StudentsEnrollmentRecord)
def create(sender, instance, created, **kwargs):
teachers = SubjectSectionTeacher.objects.all().filter(Sections=instance.Section,Education_Levels=instance.Education_Levels)
if created and teachers.exists():
StudentsEnrolledSubject.objects.update_or_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())
我希望标题和图片足以理解我想说的话,我很抱歉!
更新 我想要的
解决方案
您可以使用save()
模型上的方法来更新相关数据。
在模型类中,您应该将方法定义为
def save(self, *args, **kwargs):
#Code here
if self.courses = "ABM":
self.x = Model2.objects.get(id=x) #Whatever code you want
super(model_name, self).save(*args, **kwargs)
推荐阅读
- javascript - CSS表格数据超出表格数据宽度
- u-boot - CodeViser JTag 调试器:它如何知道 u-boot 在 RAM 中的重定位偏移量?
- javascript - 隐藏一个 div,直到该 div 内的图像从 YouTube 加载
- android - 使用 EXO 播放器播放音频文件并同时使用双簧管录制时,录制的音频文件被拉伸
- android - 使用底部导航视图保存状态
- node.js - 很难理解上下文配置(在数据源中)
- ios - Veracode CWE ID 416:免费后使用
- jwt - Next-Auth with Provider.Credentials:当 API 已经返回 JWT 令牌时如何实现?
- c# - C# 从具有特定 CreationTime 的目录中获取文件
- sql-server - SSIS:导入具有 JSON 格式数据的文本文件并加载到 SQL Server