详细视图中的 Django 管理操作?

Dav*_*ogt 7 python django django-admin

我在我的(相当标准的)Django 应用程序中定义了一些管理操作。如果其中一些操作在对象的详细信息页面上可用,那么它们也会很有意义。

现在,用户需要导航回列表,然后搜索特定记录,然后触发操作。

有没有办法在详细信息页面上公开此功能?

Jur*_*dil 7

就是您正在寻找的答案。

本质上,您创建一个包含以下内容的yourmodel_changeform.html文件:

{% extends 'admin/change_form.html' %}

{% block submit_buttons_bottom %}
    {{ block.super }}
    <div class="submit-row">
        <input type="submit" value="Button Label" name="_your-action-name">
    </div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

然后重写ModelAdmin 类上的response_change方法并设置change_form_template 属性。

from django.http import HttpResponseRedirect

class YourModelAdmin(admin.ModelAdmin):

    change_form_template = "templatelocation/yourmodel_changeform.html"

    def response_change(self, request, obj):
        if "_your-action-name" in request.POST:
            # do whatever you want the button to do
            obj.name = "new name"
            obj.save()
            return HttpResponseRedirect(".")  # stay on the same detail page
        return super().response_change(request, obj)
Run Code Online (Sandbox Code Playgroud)

在 Django 3.0.3 上测试


pyt*_*had -1

如果我理解正确的话,你需要做的就是编写一些单独的 html,然后在不同的页面上使用它{% include '/path/foo.html' %}这里有更多关于这个主题的内容。

foo.html可以添加您想要在不同页面上使用的任何功能(表单、链接等)。

如果您想要更详细的答案,很高兴看到您的代码以及您到底想要做什么。