我一直在尝试为其他处于类似情况的人提出的解决方案,但几乎所有的问题都是关于奇怪的不寻常情况,我无法使它们适应我的情况。
我希望在父级的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
首先,将类的名称更改为单数,如 Project 和 Projects_item ,因为它令人困惑。
Project
Projects_item
第二,改变 related_name 属于 ForeignKey 到 related_name="items" .
related_name
ForeignKey
related_name="items"
然后在模板中,您可以获得所有相关 Projects_items 这样地:
Projects_items
{% for item in project.items.all %} {{ item.itemName }} - {{ item.value }} {% endfor %}