【问题标题】:Page previous in Detail View for Detail View - Django详细视图的详细视图中的上一页 - Django
【发布时间】:2020-10-30 10:03:37
【问题描述】:

我有一个带有详细视图链接按钮的页面详细视图。但是就像 url 需要一个 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]+)$']

【问题讨论】:

  • 您能分享一下您的看法吗?

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


【解决方案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 %}

【讨论】:

    猜你喜欢
    • 2017-04-10
    • 2019-07-11
    • 1970-01-01
    • 2022-01-22
    • 2021-07-04
    • 1970-01-01
    • 2012-08-10
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多