详细信息视图中的上一个页面的详细信息视图-Django

时间:2020-07-09 18:12:51

标签: django django-views django-templates django-urls

我有一个页面“详细信息视图”,其中包含一个带有“详细信息视图”链接的按钮。但是就像该网址需要PK一样,我无法将PK设置为详细视图。如何在没有PK的情况下为上一页定义一个URL?

模板

<button id="botaoVoltar" type="submit" class="mb-10 btn btn-light"><a href="{% url 'relatorio' ??? %}">Voltar</a> </button>

网址

path('relatorios/relatorio/<int:pk>', RelatorioView.as_view(), name='relatorio')

例外:

NoReverseMatch Exception Value:  
Reverse for 'relatorio' with no arguments not found. 1 pattern(s) tried: ['relatorios/relatorio/(?P[0-9]+)$']

1 个答案:

答案 0 :(得分:1)

您可以定义一种方法来查找上一个对象:

class RelatorioView(DetailView):
    # …
    def get_previous(self):
        return self.get_queryset().filter(
            pk__lt=self.object.pk
        ).order_by('-pk').first()

接下来,我们可以使用它来获取上一个:

{% with prev=view.get_previous %}
{% if prev %}
    <button id="botaoVoltar" type="submit" class="mb-10 btn btn-light">
        <a href="{% url 'relatorio' prev.pk %}">Voltar</a>
    </button>
{% endif %}