在Django的admin change_form中创建自定义按钮可以通过以下步骤实现,这里以一个简单的例子为例说明如何添加一个“保存并继续编辑”按钮:
### 1. 首先,你需要定义一个Admin类(继承自`admin.ModelAdmin`):
```python
from django.contrib import admin
from .models import YourModel # 替换为你的模型名
class CustomModelAdmin(admin.ModelAdmin):
pass # 在这里添加你的自定义方法或配置
```
### 2. 然后,在`CustomModelAdmin`中定义一个视图方法(例如 `save_and_continue`):
```python
def save_and_continue(self, request, form):
form.save() # 保存表单数据
return HttpResponseRedirect('/admin/yourapp/yourmodel/') # 返回原页面继续编辑
save_and_continue.short_description = "保存并继续编辑" # 给按钮添加描述
```
### 3. 在`CustomModelAdmin`中注册这个视图方法为Django admin的操作:
```python
actions = ['save_and_continue']
```
### 4. 最后,将自定义的Admin类与你的模型关联起来:
```python
admin.site.register(YourModel, CustomModelAdmin) # 替换为你想要注册的模型和自定义Admin类
```
### 完整代码示例:
```python
from django.contrib import admin
from django.http import HttpResponseRedirect
from .models import YourModel # 假设这是你要管理的模型
class CustomModelAdmin(admin.ModelAdmin):
actions = ['save_and_continue'] # 注册自定义操作
def save_and_continue(self, request, form):
form.save() # 保存表单数据
return HttpResponseRedirect('/admin/yourapp/yourmodel/') # 返回原页面继续编辑
save_and_continue.short_description = "保存并继续编辑" # 给按钮添加描述
admin.site.register(YourModel, CustomModelAdmin) # 注册你的模型和自定义Admin类
```
这样,在Django的admin change_form中就会出现一个“保存并继续编辑”的按钮。点击这个按钮后,数据将被保存,但页面不会跳转到列表页而是留在当前编辑页面等待你继续编辑。