Django信号:使用切片将精确查询的QuerySet值限制为一个结果

我希望我的标题足以确定错误是什么。

我的<script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin="anonymous"></script> <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.20/css/dataTables.bootstrap4.min.css" /> <script type="text/javascript" src="https://cdn.datatables.net/1.10.20/js/dataTables.bootstrap4.js"></script> <div class="container"> <div class="row clearfix"> <div class="col-md-12 column"> <table class="table table-bordered table-hover order-list" id="tab_logic"> <tbody> <tr id="fst_row"> <td style="display: none;"> <input type="number" id="staticLedger" placeholder='Ledger Number' for="staticLedger" name="ledgerno" class="form-control" /> </td> <td style="display: none;"> <input type="text" id="tdsrow" placeholder='Ledger Number' name="tdsrow" value="Y" th:value="Y" class="form-control" /> </td> <td> <input type="number" id="payacc_code" placeholder='Enter A/c code' for="acctcode" name="acctcode" class="form-control sel_text" /> </td> <td> <select class="form-control sel_sel" id="payacc" name="actname" for="actname"> </select> </td> <td> <textarea class="form-control pname required" id="pay_narrat" name="narr" for="narr" placeholder="Enter your text here"></textarea> </td> <td> <input type="text" id="paydeb" name="debit" for="debit" placeholder='Debit Amount' data-action="sumDebit" class="form-control" readonly /> </td> <td> <input type="number" id="paycredit" name="credit" for="credit" placeholder='Credit Amount' data-action="sumCredit" class="form-control" tabindex="-1" readonly /> </td> <td><button type="button" class="adRow" style="width:70%; cursor: not-allowed;">x</button></a> </td> </tr> <input type="button" class="add_Row adRow" id="add_Row" value="Add Row"> </tbody> </table> </div> </div> </div>中有此代码(post_save)

models.py

当我使用 class StudentsEnrolledSubject(models.Model): Students_Enrollment_Records = models.ForeignKey(StudentsEnrollmentRecord,related_name='+',on_delete=models.CASCADE,null=True) Subject_Section_Teacher = models.ForeignKey(SubjectSectionTeacher,null=True,blank=True) @receiver(post_save,sender=StudentsEnrollmentRecord) def create(sender,instance,created,*args,**kwargs): teachers = SubjectSectionTeacher.objects.filter(Sections=instance.Section,Education_Levels=instance.Education_Levels,Courses=instance.Courses) for each in teachers: if created and teachers.exists(): StudentsEnrolledSubject.objects.update_or_create( pk=each.id,Students_Enrollment_Records=instance,Subject_Section_Teacher=teachers.all() ) class StudentsEnrollmentRecord(models.Model): Student_Users = models.ForeignKey(StudentProfile,related_name='students',null=True) class SubjectSectionTeacher(models.Model): Education_Levels = models.ForeignKey(EducationLevel,blank=True) Courses = models.ForeignKey(Course,blank=True) Sections = models.ForeignKey(Section,null=True) Subjects = models.ForeignKey(Subject,null=True) Employee_Users = models.ForeignKey(EmployeeUser,null=True) 时,我没有收到任何错误,但是那不是我想要的结果,所以我决定将其更改为此Subject_Section_Teacher=teachers.first()

我只希望结果变成这个

Django信号:使用切片将精确查询的QuerySet值限制为一个结果

不是这个

Django信号:使用切片将精确查询的QuerySet值限制为一个结果

这是我获取/过滤数据的地方

Django信号:使用切片将精确查询的QuerySet值限制为一个结果

k12play 回答:Django信号:使用切片将精确查询的QuerySet值限制为一个结果

像这样更新代码:

@receiver(post_save,sender=StudentsEnrollmentRecord)
def create(sender,instance,created,*args,**kwargs):
    teachers = SubjectSectionTeacher.objects.filter(Sections=instance.Section,Education_Levels=instance.Education_Levels,Courses=instance.Courses)
    for each in teachers:
        StudentsEnrolledSubject.objects.update_or_create(
                    pk=each.id,Students_Enrollment_Records=instance,Subject_Section_Teacher=each

                )
,

由于您已经在teachers上进行迭代,因此应使用each在循环中传递当前的teacher而不是无效或{{ 1}}永远只是第一位老师:

teachers.all()
本文链接:https://www.f2er.com/3162144.html

大家都在问