템플릿의 관련 필드 ID를 템플릿에 표시하려면 약 1 시간 반 동안 노력했습니다. 공상적인 게 없어요. 전 신분증 만 갖고 싶습니다. Django 템플릿에 표시 할 키를 가져올 수 없습니다.
class CompositeLesson(models.Model):
lesson = models.ForeignKey(Lesson)
student = models.ForeignKey(Student)
actualDate = models.DateTimeField()
내가
CompositeLesson
목록,
lessonsList
을 가지고 성공적으로 목록을 반복 할 수 있어요 가정 : 여기
문제의 모델입니다. 다른 입력란 (예 : actualDate)이 올바르게 표시됩니다. 스 니펫 템플릿 코드의
:
{% for lesson in lessonsList %}
<tr{% if forloop.counter|divisibleby:"2" %} class="shaded_row"{% endif %}>
<td>{{ lesson.actualDate }}</td>
<td class="table_button">
{% if not lesson.isCancelled %}
<div class="table_button_div" id="cancel_{{ lesson__lesson__id }}"><a href="#">Cancel Lesson</a></div>
{% else %}
<div class="cancelled_lesson"></div>
{% endif %}
문제는 내가 목록에있는 학습 객체의 ID를 얻을 수있다. 나는 시도했다 :
lesson.lesson
lesson.lesson.id
lesson.lesson__id
lesson__lesson__id
lesson.lesson.get_id
... 그리고 아무도 작동하지 않는다.
미리 감사드립니다.
편집 : 내가 옳았다 표시,
def all_student_lessons(request, id):
# This should list all lessons up to today plus the next four, and call out any cancelled or unpaid lessons
# User should have the option to mark lessons as paid or cancel them
s = Student.objects.get(pk = id)
if s.teacher != request.user:
return HttpResponseForbidden()
less = Lesson.objects.filter(student = id)
lessonsList = []
for le in less:
if le.frequency == 0:
# lesson occurs only once
x = CompositeLesson()
x.lessonID = le.id
x.studentID = id
x.actualDate = datetime.combine(le.startDate, le.lessonTime)
x.isCancelled = False
try:
c = CancelledLesson.objects.get(lesson = le.id, cancelledLessonDate = le.startDate)
x.canLesson = c.id
x.isCancelled = True
except:
x.canLesson = None
try:
p = PaidLesson.objects.get(lesson = le.id, actualDate = le.startDate)
x.payLesson = p.id
except:
x.payLesson = None
lessonsList.append(x)
else:
sd = next_date(le.startDate, le.frequency, le.startDate)
while sd <= date.today():
x = CompositeLesson()
x.lessonID = le.id
x.studentID = id
x.actualDate = datetime.combine(sd, le.lessonTime)
x.isCancelled = False
try:
c = CancelledLesson.objects.get(lesson = le.id, cancelledLessonDate = le.startDate)
x.canLesson = c.id
x.isCancelled = True
except:
x.canLesson = None
try:
p = PaidLesson.objects.get(lesson = le.id, actualDate = le.startDate)
x.payLesson = p.id
except:
x.payLesson = None
lessonsList.append(x)
sd += timedelta(le.frequency)
lessonsList.sort(key = lambda x: x.actualDate)
return render_to_response('manage_lessons.html', {'lessonsList': lessonsList,
's': s})
'lesson.lesson.pk'을 사용해 보셨나요? –
'lesson.lesson.pk'을 불행히도 시도하지 않은 것들의 목록에 추가하십시오 ... –
어떻게 레슨 목록을보기에 만드시겠습니까? 'select_related ('lesson')'을 필터에 추가 해보십시오. –