python - 详细 View 中的 Django 管理操作?

标签 python django django-admin

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

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

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

最佳答案

Here是您正在寻找的答案。

基本上,您创建一个包含以下内容的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 %}

然后重写 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)

在 Django 3.0.3 上测试

关于python - 详细 View 中的 Django 管理操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33763379/

相关文章:

python - 遍历字典

python - 无法将库导入项目

要包含的 Django 传递对象

python - Django - 在 DetailView 中过滤

android - 你可以在android网站上使用数据库吗?

python - 将 django 升级到 1.6 后,django admin css 不工作

python - 如何从 Pandas USFederalHolidayCalendar 中删除特定假期?

python - 将多个 csv 文件从不同的目标解压缩到一个共同的目标

python - 如果存在相关对象,则阻止字段更改?

python - 尝试让 optgroup 标 checkout 现在 Django 管理内联中