如何在Django模型中循环时获取下一个对象

0 投票
2 回答
640 浏览
提问于 2025-04-16 11:54

这是代码:

{% for o in page_obj.object_list %}
                <tr style="color:#4A3C8C;background-color:{% cycle '#E7E7FF' '#F7F7F7' %};"> 
                  <td align="center"> {{o.terminal_id}}</td>
                  <td align="center"> {{o.time_stamp}}</td> 
                  <td align="center" class="lat"> {{o.latitude|floatformat:"6"}}</td>
                  <td align="center" class="lng"> {{o.longitude|floatformat:"6"}}</td> 
                  <td align="center"> {{o.speed}}</td>
                  <td align="center"> 
                    <script>
                        $("script").last().parent().parent()
                    </script>
                  </td>
                  <td align="center"> {{o.speed}}</td>
                  <td align="center"> {{o.adress_reality}}</td> 
                </tr> 
            {%endfor%}

我想获取在 'o' 对象之后的下一个对象。 我该如何从 'o' 对象获取下一个对象呢?另外,我该如何在 Python 文件中获取下一个对象,然后在 HTML 中像下面这样显示出来?

{{ o.next_obj }}

谢谢

2 个回答

0

你试过用 get_next_by_FOO 吗?

如果这个字段不是动态生成的,你可以简单地在你的模型里添加:

class MyObj(models.Model):
    lat = ...
    lon = ...
    def get_next_by_id(self):
        return self.objects.get(id=self.id+1)

然后你可以用 {{ o.get_next_by_id.lat }} 来获取。

如果不是这样的话,可以考虑使用 模板标签,具体可以看看标签部分,不过这需要写更多的代码。如果你能给我一个更详细的例子,我可以试着给你一个通用的模板标签,可能会适合你的情况。

祝你好运。

0

如果你想在一个循环里访问多个对象,(虽然这样做并不是一个好的设计思路,不过这又是另一个话题。)你不是直接循环这些对象,而是用一个计数器,然后通过这个计数器来访问相应的对象。

#In your view
obj_count = range(page_obj.object_list.count())

{% for i in obj_count %}

    o.i                   # Will access current object
    o.i+1                 # Will access the next object

{% endfor %}

撰写回答