首页 > 解决方案 > 如何使按钮单击更改 django order_by?

问题描述

这是我的views.py 函数。

def publications(request):
    if request.method == 'POST':
        publications = UserPublications.objects.all().order_by('status_date')
    else:
        publications = UserPublications.objects.all().order_by('contributors')


    context = {'publications': publications}
    return render(request, 'users/publications.html', context)

这是我的publications.html:

<button type="submit" method="POST">Filter By Date</button>
<ol  class="text">
    {% for publication in publications %}
        <div>{{publication.text}}</div>
    {% endfor %}
</ol>

我希望单击一个按钮,如果有人单击它,它会更改为按日期过滤,而不是按贡献者(我的模型的两个属性)。我该怎么做?现在我没有错误,但是当我点击按钮时,它并没有更新我的对象的排序。提前致谢。

标签: pythonhtmldjango

解决方案


该按钮需要链接到 a <form>,因此:

<form method="POST" action="{% url 'view-name-for-publications' %}">
    <button type="submit">Filter By Date</button>
</form>

然而,使用 HTTP 请求方法来确定是否按日期排序并没有多大意义。通常,您使用查询字符串[wiki]发出 GET 请求,以指定它将在哪个字段上进行排序。


推荐阅读