首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何为django管理页面中的每一行在列表页面上放置一个按钮

在Django管理页面中为每一行放置一个按钮,可以通过自定义模板来实现。以下是一种实现方式:

  1. 创建一个新的Django应用(如果尚未创建):
代码语言:txt
复制
python manage.py startapp custom_admin
  1. custom_admin应用的目录下创建一个名为templates的文件夹,并在其中创建一个名为admin的子文件夹:
代码语言:txt
复制
custom_admin
├── templates
│   └── admin
  1. admin文件夹中创建一个名为change_list.html的模板文件,用于自定义管理页面的列表视图:
代码语言:txt
复制
{% extends "admin/change_list.html" %}

{% block result_list %}
    <table id="result_list">
        <thead>
            <tr>
                {% block result_list_header %}
                    <!-- 添加自定义按钮列 -->
                    <th scope="col" class="column-action">Action</th>
                    {{ headers }}
                {% endblock %}
            </tr>
        </thead>
        <tbody>
            {% block result_list_body %}
                {% for result in results %}
                    <tr class="{% cycle row1,row2 %}">
                        <!-- 添加自定义按钮 -->
                        <td class="action-checkbox">
                            <a href="{% url 'custom_admin:custom_action' result.pk %}">Custom Action</a>
                        </td>
                        {{ result }}
                    </tr>
                {% endfor %}
            {% endblock %}
        </tbody>
    </table>
{% endblock %}
  1. custom_admin应用的urls.py文件中添加一个URL模式,用于处理自定义按钮的点击事件:
代码语言:txt
复制
from django.urls import path

from . import views

app_name = 'custom_admin'

urlpatterns = [
    path('custom_action/<int:pk>/', views.custom_action, name='custom_action'),
]
  1. custom_admin应用的views.py文件中定义custom_action视图函数,用于处理自定义按钮的点击事件:
代码语言:txt
复制
from django.shortcuts import get_object_or_404, redirect

from django.contrib import messages

from django.contrib.admin.views.main import ChangeList

def custom_action(request, pk):
    # 根据主键获取对象
    obj = get_object_or_404(MyModel, pk=pk)
    
    # 执行自定义操作
    # ...

    # 添加成功消息
    messages.success(request, 'Custom action executed successfully.')

    # 重定向回原始的列表页面
    return redirect('admin:myapp_mymodel_changelist')
  1. 在需要使用自定义按钮的模型的admin.py文件中,继承ChangeList类,并指定自定义的模板:
代码语言:txt
复制
from django.contrib import admin

from django.contrib.admin.views.main import ChangeList

from .models import MyModel

class MyModelChangeList(ChangeList):
    def get_template(self, request):
        return ['admin/myapp/mymodel/change_list.html']

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    def get_changelist(self, request, **kwargs):
        return MyModelChangeList

    # 其他模型管理选项
    # ...

现在,当您访问Django管理页面中的列表视图时,每一行都会显示一个名为"Custom Action"的按钮。当点击该按钮时,将执行custom_action视图函数中定义的自定义操作,并显示成功消息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券