繁体   English   中英

在 Django 中结合两个 arrays

[英]combining two arrays in Django

我正在研究显示帖子(如 twitter)的 web。 在 Django views.py 中,我编写了一个代码,该代码生成了两个 arrays 并分配了 arrays 以在 Z4CZDBAD4FCA2E7AAFF4 模板中使用。 视图.py:

def arrays(request):
    allposts = posts.objects.all()
    m = ['empty', 'like', 'unlike', 'like', 'unlike']
    aa = [0, 1, 2, 3, 4]
    return render(request,  "network/index.html" ,{'allposts': allposts, 'm':m, 'aa':aa})

(m) 数组表示每个帖子是否被点赞(数组中每个 object 的排列与帖子 id 相同)而 (aa) 表示数据库中每个帖子的 id

在 index.html 我想根据数组中的排列为每个帖子显示“喜欢”或“不喜欢”。

在索引中。html

{% for post in allposts %}
    <div>
    {% for object in aa %}
    {% if object == post.id %}
    <p>{{m.object}}</p>
    {% endif %}
    {% endfor %}

   
    </div>
    {%endfor %}
 

但问题是我无法匹配 HTML 模板中的 aa 数组和 m 数组,但我可以显示{{m.1}}而不是{{m.object}} 那么我该如何匹配这两个 arrays 呢?

我不确定这里的“匹配”和“安排”是什么意思。 如果我不回答您的问题,请详细说明您要完成的工作。

问题是我无法匹配 HTML 模板中的 aa 数组和 m 数组

这是含糊的,但建议您要将 m 中的某些元素附加到 aa 中的某些元素。 我建议像字典一样以组合方式发送数据

new_m = {a: m[a] for a in aa}

在 index.html 我想根据数组中的排列为每个帖子显示“喜欢”或“不喜欢”

这也有点模糊,但建议您要根据 aa 订购 m。 下面是你将如何做到这一点:

m = [x for x,_ in sorted(zip(m, aa)]

最后,我对模板中的这一行更加困惑: {% if object == post.id %}因为它只会在前 5 个帖子上显示您的喜欢、不同和其他选项。

有几种方法可以做到这一点。 我将使用 ID 列表过滤您的结果并对其进行排序,使其与您的aa列表具有相同的顺序。 然后 go 和zip

def arrays(request):
    aa = [0, 1, 2, 3, 4]
    filtered_posts = posts.objects.filter(id__in=aa).order_by("id")
    m = ['empty', 'like', 'unlike', 'like', 'unlike']
    posts_m_mapping = zip(filtered_posts, m)

    return render(request,  "network/index.html" ,{'posts_m_mapping': posts_m_mapping})

在您的模板中,只需遍历posts_m_mapping

{% for post, sentiment in posts_m_mapping %}
   ...
{%endfor %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM