Получение связанных моделей в шаблоне

У меня есть две модели. Я пытаюсь получить qs заданий для заданного обзора в рамках моего шаблона

Models.py

    class Job(models.Model):
        employee = models.ForeignKey(Employee, on_delete=models.CASCADE, null=True, blank=True) 
        cart = models.ForeignKey(Cart, related_name="cartmodel",  on_delete=models.CASCADE, null=True, blank=True) 

    class Review(models.Model)
         cart = models.ForeignKey(Cart, on_delete=models.CASCADE, default=None)

views.py

reviews = Review.objects.all()

шаблон

{% for review in reviews %}
    {% for i in review.cart.job_set.all %}

        {{i.employee}}

    {% endfor %}
{% endfor %}

Код в моем шаблоне не работает. Есть мысли, как правильно построить этот набор в моем шаблоне?

Спасибо!

Поскольку вы указали как related_name='cartmodel', это означает, что вы обращаетесь к связанным Job с помощью review.cart.cartmodel.all, но related_name='cartmodel', вероятно, ошибочное название: это название ForeignKey в обратном направлении, поэтому вы можете переименовать его в:

class Job(models.Model):
    employee = models.ForeignKey(
        Employee,
        on_delete=models.CASCADE,
        null=True,
        blank=True
    )
    cart = models.ForeignKey(
        Cart,
        related_name='jobs',
        on_delete=models.CASCADE,
        null=True,
        blank=True
    )

тогда вы можете изобразить это следующим образом:

{% for review in reviews %}
    {% for i in review.cart.jobs.all %}
        {{ i.employee }}
    {% endfor %}
{% endfor %}

Также странно, что внешние ключи (оба) NULLable, это означает, что i.employee может быть None, и таким образом не указывать на реального сотрудника.

Вы можете оптимизировать выполнение запросов путем предварительной выборки cart и заданий с:

reviews = Review.objects.select_related('cart').prefetch_related('cart__jobs')
Вернуться на верх