Как получить получить исправить эту ошибку «Значение QuerySet для точного поиска должно быть ограничено одним результатом с использованием нарезки». - PullRequest
0 голосов
/ 11 октября 2019

фильтрация 2 моделей

id = request.GET.get('StudentID')
studentenroll = StudentsEnrollmentRecord.objects.filter(Student_Users=id)
payment=StudentsPaymentSchedule.objects.filter(Students_Enrollment_Records=studentenroll)
return render(request, 'Homepage/enrollmentrecords.html',{"studentenroll":studentenroll,"payment":payment})

мои модели

class StudentsEnrollmentRecord(models.Model):
    Student_Users = models.ForeignKey(StudentProfile, related_name='+', 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,null=True)
    Discount_Type = models.ForeignKey(Discount, related_name='+', on_delete=models.CASCADE,null=True)
    Remarks = models.TextField(max_length=500,null=True)
    def __str__(self):
        suser = '{0.Student_Users}  {0.Education_Levels}'
        return suser.format(self)
class StudentsPaymentSchedule(models.Model):
    Students_Enrollment_Records=models.ForeignKey(StudentsEnrollmentRecord, related_name='+', on_delete=models.CASCADE,null=True)
    Payment_Schedule = models.DateField(null=True,blank=True)
    Amount = models.FloatField()
    Remarks=models.TextField(max_length=500)
    def __str__(self):
        suser = '{0.Students_Enrollment_Records}'
        return suser.format(self)

Можете ли вы, ребята, помочь мне в моем назначении, потому что я не знаю, как соединить эти 2 модели в представлениях, и янемного запутать в фильтрации. заранее спасибо.

1 Ответ

1 голос
/ 11 октября 2019

Использование оператора __in;Поскольку studentenroll - это набор запросов, а не один объект.

payment=StudentsPaymentSchedule.objects.filter(Students_Enrollment_Records__in=studentenroll)

Кроме того, немного поработайте над именами var / class / atrs; PEP8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...