Шаблон - Родительский детальный просмотр с дочерним списком для цикла

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

Мне нужен цикл for для информации о дочерних элементах в родительском DetailView

Модели

class Projects(models.Model):
      fk_user = models.ForeignKey(User, on_delete=models.CASCADE)
      name = models.BooleanField(default=False)

class Projects_items(models.Model):
      itemName = models.BooleanField(default=False)
      fk_project = models.ForeignKey(Projects,on_delete=models.CASCADE, related_name="item")
      value = models.FloatField()

Виды

class projects(LoginRequiredMixin, UserPassesTestMixin, UpdateView):

    model = Projects
    fields = [
    'name',
    ]
    template_name = 'games/project_details.html'
    context_object_name = 'projects'


    def form_valid(self, form):
        form.instance.fk_user = self.request.user
        form.save()
        # return super().form_valid(form)
        return HttpResponseRedirect(self.request.path_info)

    def test_func(self):
        post = self.get_object()
        if self.request.user == post.fk_user:
            return True
        return False    

Шаблон - projects_details

{% extends './underlay.html' %}
{% load static %}
{% load crispy_forms_tags %}
<link rel="stylesheet" type="text/css" href="{% static 'details.css' %}">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins">

{% block content %}
<H2>LIST OF ITEMS BELONGING TO THIS PROJECT</H2>
 
 ?

SOMETHING LIKE:
{% for projects.item in projects %}
{{ projects.item.itemName }} - {{ projects.item.value }}
{% endfor %}

THIS GAVE AN ERROR OF 'PROJECTS' OBJECT NOT ITERABLE

Во-первых, измените названия классов на единственное число, как Project и Projects_item, потому что это сбивает с толку.

Во-вторых, измените related_name из ForeignKey на related_name="items".

Затем в шаблоне вы можете получить все связанные Projects_items следующим образом:

{% for item in project.items.all %}
    {{ item.itemName }} - {{ item.value }}
{% endfor %}
Вернуться на верх