外键中的 Django 过滤模型
Django filtering models in Foreign Key
Models.py
class AdmissionStudent(models.Model):
studentlabel = models.CharField(max_length = 100, null = False, blank = False)
def __str__(self):
return self.studentlabel
class AdmissionRequirement(models.Model):
requirementstudent = models.ForeignKey(AdmissionStudent, on_delete = models.CASCADE, null =
False, blank = False)
requirementparagraph = models.TextField(null = False, blank = False)
def __str__(self):
return '{} - {}'.format(self.requirementstudent, self.requirementparagraph)
Views.py
def admission(request):
header = AdmissionHeader.objects.first()
student = AdmissionStudent.objects.all()
requirement = AdmissionRequirement.objects.all()
context = {
'header': header,
'student': student,
'requirement': requirement,
'title':'Admissions'
}
return render(request, 'pages/admission.html', context)
Admission.html(模板)
{% for student in student %}
<b>{{ student.studentlabel }}</b><br>
{% if {{ student.studentlabel}} == {{requirement.requirementstudent }} %}
{% for requirement in requirement %}
{{ requirement.requirementparagraph }}<br>
{% endfor %}
{% endfor %}
我知道我在模板中所做的事情很愚蠢,但我真的不知道如何过滤入学要求。
下面是我希望它如何显示的示例:
受让人
-第一个要求
-第二个要求
-3rd 要求
留学生
-第一个要求
-第二个要求
-等等
您可以只获取所有 AdmissionStudent
,并预取每个学生的所有相关 AdmissionRequirement
。
有了它,您就不需要 requirement = AdmissionRequirement.objects.all()
。您只需要像这样在模板中传递您的学生名单:
student = AdmissionStudent.objects.all().prefetch_related('admissionrequirement_set')
context = {
...
'student': student,
...
}
然后在你的模板中,使用学生要求的相关数据来显示:
{% for student in student %}
<b>{{ student.studentlabel }}</b><br>
{% for requirement in student.admissionrequirement_set.all %}
{{ requirement.requirementparagraph }}<br>
{% endfor %}
{% endfor %}
Models.py
class AdmissionStudent(models.Model):
studentlabel = models.CharField(max_length = 100, null = False, blank = False)
def __str__(self):
return self.studentlabel
class AdmissionRequirement(models.Model):
requirementstudent = models.ForeignKey(AdmissionStudent, on_delete = models.CASCADE, null =
False, blank = False)
requirementparagraph = models.TextField(null = False, blank = False)
def __str__(self):
return '{} - {}'.format(self.requirementstudent, self.requirementparagraph)
Views.py
def admission(request):
header = AdmissionHeader.objects.first()
student = AdmissionStudent.objects.all()
requirement = AdmissionRequirement.objects.all()
context = {
'header': header,
'student': student,
'requirement': requirement,
'title':'Admissions'
}
return render(request, 'pages/admission.html', context)
Admission.html(模板)
{% for student in student %}
<b>{{ student.studentlabel }}</b><br>
{% if {{ student.studentlabel}} == {{requirement.requirementstudent }} %}
{% for requirement in requirement %}
{{ requirement.requirementparagraph }}<br>
{% endfor %}
{% endfor %}
我知道我在模板中所做的事情很愚蠢,但我真的不知道如何过滤入学要求。
下面是我希望它如何显示的示例:
受让人
-第一个要求
-第二个要求
-3rd 要求
留学生
-第一个要求
-第二个要求
-等等
您可以只获取所有 AdmissionStudent
,并预取每个学生的所有相关 AdmissionRequirement
。
有了它,您就不需要 requirement = AdmissionRequirement.objects.all()
。您只需要像这样在模板中传递您的学生名单:
student = AdmissionStudent.objects.all().prefetch_related('admissionrequirement_set')
context = {
...
'student': student,
...
}
然后在你的模板中,使用学生要求的相关数据来显示:
{% for student in student %}
<b>{{ student.studentlabel }}</b><br>
{% for requirement in student.admissionrequirement_set.all %}
{{ requirement.requirementparagraph }}<br>
{% endfor %}
{% endfor %}