Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在同一数据上使用Django for循环两次_Python_Django - Fatal编程技术网

Python 如何在同一数据上使用Django for循环两次

Python 如何在同一数据上使用Django for循环两次,python,django,Python,Django,我试图使用for循环在同一Django模板中对同一数据进行两次迭代。但是,第二个for循环只返回数据库中的第一个对象 基本上,我在主页上的数据库中有每个工作的图像,当点击它时,应该会显示该工作的更详细描述。数据库中的所有作业在主页上显示良好,但单击时,它们都显示第一个作业的描述 我认为这与只能使用一次迭代器有关,但我不知道解决方案是什么 model.py from django.db import models class Job(models.Model): title = mode

我试图使用for循环在同一Django模板中对同一数据进行两次迭代。但是,第二个for循环只返回数据库中的第一个对象

基本上,我在主页上的数据库中有每个工作的图像,当点击它时,应该会显示该工作的更详细描述。数据库中的所有作业在主页上显示良好,但单击时,它们都显示第一个作业的描述

我认为这与只能使用一次迭代器有关,但我不知道解决方案是什么

model.py

from django.db import models

class Job(models.Model):
    title = models.CharField(max_length=50, default="Example Work")
    image = models.ImageField(upload_to='images/')
    summary = models.TextField()
views.py

from django.shortcuts import render
from .models import Job

def get_index(request):
    jobs = Job.objects
    return render(request, 'index.html', {'jobs': jobs})
index.html

{%用于jobs.all%}
{{job.title}
{%endfor%}
{%用于作业中的作业。所有%}
{{job.title}

{{job.summary}


{%endfor%}
这与Django为每次迭代输出相同的数据无关。如果您在浏览器中通过查看源代码检查生成的HTML,您肯定会看到正确的数据

问题在于HTML本身。不能有多个元素具有相同的HTML
id
属性;但您对每一个都使用了
id=“portfolio model”
。当你的JS试图弹出模式时,它只会找到这个ID的第一个实例


您需要在每次迭代中使用不同的ID—可能是通过附加一个唯一的元素,例如作业pk—和/或使用一个类来触发模态。

啊,好的,谢谢,这很有意义。最初,我为每一个模态都有不同的ID,但我已经将其压缩到循环中,并且忘记了这一点。谢谢你的帮助。