Я пытаюсь получить доступ к связанному объекту (PaymentDetail
, если он существует) при циклическом просмотре списка _set
объектов (Registrations
).
Мои модели выглядят так:
Модель
class Registration(models.Model):
person = models.ForeignKey(Person, on_delete=models.PROTECT)
course_detail = models.ForeignKey(
CourseDetail,
on_delete=models.PROTECT
)
comments = models.CharField(max_length=200, blank=True, null=True)
def __str__(self):
return '%s' % (self.course_detail.course.name)
class PaymentDetail(models.Model):
payment = models.ForeignKey(Payment, on_delete=models.PROTECT)
registration = models.ForeignKey(
Registration,
on_delete=models.PROTECT)
На мой взгляд, я просто получаю набор запросов нужных людей и передаю его шаблону (они отображаются нормально).
вид
def index(request, **kwargs):
people = Person.get_related_people(request.user.id).order_by('first_name')
return render(request, 'people_app/index.html', {
'people': people,
})
Поскольку я чередую их в шаблоне, я показываю Registration
s для этих людей. Пока я перебираю эти регистрации - я пытаюсь увидеть, есть ли PaymentDetail
, связанный с этим Registration
В моем шаблоне я перебираю registration_list
следующим образом:
шаблон
{% for person in people %}
{% for registration in person.registration_set.all %}
{{ registration.id }}
{% if registration.paymentdetail_set|length > 0 %}
PAID
{% else %}
NO PAYMENT
{% endif %}
{% endfor %}
{% endfor %}
Как вы можете себе представить - это не работает и всегда отображается как НЕТ ОПЛАТЫ, даже если существует PaymentDetail
.