Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 详细视图中的Django管理操作?_Python_Django_Django Admin - Fatal编程技术网

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

Python 详细视图中的Django管理操作?,python,django,django-admin,Python,Django,Django Admin,我在我(相当标准的)Django应用程序中定义了一些管理操作。如果这些操作在对象的详细信息页面上可用,那么其中一些操作也会很有意义 现在,用户需要导航回列表,然后搜索特定记录,然后触发操作 是否有办法在详细信息页面上公开此功能?如果我理解正确,您需要做的是编写一些单独的html,然后使用{%include'/path/foo.html%}在不同的页面上使用它。更多关于这个话题 在foo.html中,您可以添加希望在不同页面(表单、链接等)上使用的任何功能 如果你想得到更详细的答案,最好看看你的代

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

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


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

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

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

如果你想得到更详细的答案,最好看看你的代码以及你到底想做什么。

来详细说明毕达德

1添加另一个简单的html,扩展您的管理html,并保留描述管理操作的按钮。你可以叫它change\u form.py 确保strt与以下各项一起使用:

{% extends "admin/change_form.html" %}
2您需要在admin.py中添加小函数,以将按钮连接到操作函数。 像短袖的:

        try:
            sr = Scenario.objects.filter(pk = pk)
            queitem = QueueScript.objects.filter(scriptresult__pk=sr.scriptreport.pk)
        #do somtho

        return HttpResponseRedirect(request.META["HTTP_REFERER"])
3您需要详细说明/覆盖admins get_URL函数,以便从上面了解这些函数:

def get_urls(self, ):
    urls = super(ScenarioAdmin, self).get_urls()
    my_urls = patterns("",
        url(r"(?P<pk>\d+)/stop_my_script/$",
                           self.stop_my_script),
        url(r"(?P<pk>\d+)/run_scenario_standalone/$",
                           self.run_scenario_standalone),
                       )

    return my_urls + urls
这就是你想要的答案

基本上,您创建了一个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 %}

在Django 3.0.3上测试

请选择正确答案或自己提供答案
{% 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 %}
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)