代码之家  ›  专栏  ›  技术社区  ›  Game Analysis

模板-循环列表的父详细信息视图(带子级)

  •  0
  • Game Analysis  · 技术社区  · 2 年前

    我一直在尝试为其他处于类似情况的人提出的解决方案,但几乎所有的问题都是关于奇怪的不寻常情况,我无法使它们适应我的情况。

    我希望在父级的DetailView中有一个for循环的子级信息

    模型

    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    
    

    模板-Project\u详细信息

    {% 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
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   NixonSparrow    2 年前

    首先,将类的名称更改为单数,如 Project Projects_item ,因为它令人困惑。

    第二,改变 related_name 属于 ForeignKey related_name="items" .

    然后在模板中,您可以获得所有相关 Projects_items 这样地:

    {% for item in project.items.all %}
        {{ item.itemName }} - {{ item.value }}
    {% endfor %}