Django:两个不同类的字段一个循环



很抱歉深入挖掘,以为我的错误很容易修复,但几个小时以来我就不相处了。更新的工作代码:

视图:

def post_list(request):
    posts = TodoItem.objects.order_by('id')
    return render(request, 'blog/post_list.html', {'posts': posts})

模板:

{% for post in posts %}
    {{ post.list.tag }}
    {{ post.width }}
{% endfor %}

模型:

class TodoList(models.Model):
   tag = ...
class TodoItem(models.Model):
   width = ...
   list = models.ForeignKey(TodoList, related_name="list_items")

{{ post.list.tag }}list = models.ForeignKey做到了!

一切正常,但因为有了TodoItems我可以动态添加表单,大多数时候我在TodoItems上有更多的字段,然后在TodoList上。所以我的问题是当我像上面这样渲染循环时,我有以下输出:

标签:宽度, 标签:宽度, 标签:宽度

, 标签:宽度, ...

我需要的是遍历TodoList,而不是TodoItem我期望以下输出的地方:

标签: 宽度, 宽度, 宽度

| 标签: 宽度, 宽度 ...

(宽度的数量是动态添加的,但是当我添加例如 4 次width时,应该只有一个相关的tag (我在这里尝试了很多附近的一个例子

视图:TodoList而不是TodoItem

def post_list(request):
    posts = TodoList.objects.order_by('id')
    return render(request, 'blog/post_list.html', {'posts': posts})

但随后在模板TodoList输出失败。我在模板上进行了尝试。任何人都可以在这里帮助我吗

你不需要

改变你的视图。 我认为并希望您从列表到项目有一对多(外键(

在这种情况下,只需在您的模板中执行:

{% for post in posts %}
   {{ post.list.tag }} 
   {{ post.width }}
{% endfor %}

您的模型将如下所示:

class TodoList(models.Model):
   name = ... 
   tag = ...
class TodoItem(models.Model):
   # ...
   list = models.ForeignKey(TodoList, related_name="list_items")

最新更新