【发布时间】:2021-10-29 12:44:30
【问题描述】:
我有模型(删除了所有不必要的):
class Contract(models.Model):
contract_number = models.IntegerField(primary_key=True)
student = models.ForeignKey('Student', on_delete=models.CASCADE)
lessons = models.ManyToManyField('Lesson')
class Student(models.Model):
name = models.CharField(max_length=150)
age = models.IntegerField()
class Lesson(models.Model):
lesson_time = models.TimeField(verbose_name='Время урока')
lesson_date = models.DateField(verbose_name="Дата урока")
is_done = models.BooleanField(verbose_name="Проведен")
在我的 HTML 中,我使用了特殊链接:
<a href="{%url 'stud_detail' id=student.id%}">
导致urls.py中的URL:
path('student/<int:id>', views.one_student, name='stud_detail')
还有我的观点(再次删除所有其他模型):
def one_student(request, id):
student = Student.objects.get(id=id)
contracts = Contract.objects.filter(student=id)
lessons = Lesson.objects.filter(id__in=contract)
print(lessons)
content = dict(student=student,
contracts=contracts,
lessons=lessons)
return render(request, 'studbase/student_detail.html', content)
现在我的合同中有 10 节课,但根据过滤结果,我只有一节。 print(lessons) 只返回 1 节课而不是 10 节课。
我做错了什么?
【问题讨论】:
标签: python python-3.x django django-models filtering