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

2024-06-16 14:24:06 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,我想我的错误很容易纠正,但由于时间关系,我无法接受。更新的工作代码:

查看:

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输出失败。我不想让你试模板。 有人能帮帮我吗


Tags: 标记模板宽度objectsmodelsrequestdeftag
1条回答
网友
1楼 · 发布于 2024-06-16 14:24:06

你不需要改变你的观点。我想,我希望你有一对多(外键)从清单到项目

在这种情况下,只需在模板中执行以下操作:

{% 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")

相关问题 更多 >