在change_form_object_tools.html模板中使用对象的id

Ped*_*riz 5 django django-urls django-admin

我有两个指定不同路径的按钮。我想通过参数传递 object.id 。

我的网址

urlpatterns = [
    path('', admin.site.urls, name ='home'),
    path('dpo/imprimir/aprovado/<int:id>/',Aprovado, name ='aprovado'),
    path('dpo/imprimir/reprovado/<int:id>/',Reprovado, name ='reprovado'),
    ]
Run Code Online (Sandbox Code Playgroud)

我的看法

from django.http import HttpResponse
from django.shortcuts import render
from django.shortcuts import render_to_response
from .models import Projeto


def Aprovado(request, id):
        obj = Projeto.objects.get(id=id)
        context = {
                "object": obj
        }
        return render(request, "dpo/imprimir/aprovado.html", context)

def Reprovado(request, id):
        obj = Projeto.objects.get(id=id)
        context = {
                "object": obj
        }
        return render(request, "dpo/imprimir/reprovado.html", context)
Run Code Online (Sandbox Code Playgroud)

** 我的模板**

{% load i18n admin_urls %}
{% block object-tools-items %}
<li>
    <a href="{% url 'aprovado' object.id  %}">{% trans "Aprovado" %}</a></a>
</li>
<li>

    <a href="{% url 'reprovado' object.id  %}">{% trans "Aprovado" %}</a>
</li>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我想我这样做的方式是错误的

djv*_*jvg 7

对象 ID 字符串也可以在模板上下文中作为object_id.

ModelAdmin._changeform_view() 这可以在此处的源代码中看到。


Ala*_*air 6

change_form_object_tools.html模板中,您应该能够使用 访问该对象original

{% load i18n admin_urls %}
{% block object-tools-items %}
<li>
    <a href="{% url 'aprovado' original.pk  %}">{% trans "Aprovado" %}</a></a>
</li>
<li>

    <a href="{% url 'reprovado' original.pk  %}">{% trans "Aprovado" %}</a>
</li>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

一般来说,您可以使用{% debug %}标签或 django-debug-toolbar 来检查模板上下文中有哪些变量。