如何在Django Admin中添加与模型无关的复选框并获取其值?
Django Admin添加与模型无关的复选框并获取值
要实现这个需求,你可以按以下步骤操作:
1. 自定义Admin表单,添加复选框字段
首先创建一个继承自ModelForm的自定义表单,在里面添加一个和模型无关的布尔字段作为复选框:
from django import forms from .models import Device class DeviceAdminForm(forms.ModelForm): # 添加复选框字段,required=False表示不是必填项 do_extra = forms.BooleanField(label='执行额外操作', required=False) class Meta: model = Device fields = '__all__' # 或者指定模型的具体字段
2. 在DeviceAdmin中绑定自定义表单
修改你的DeviceAdmin类,指定使用上面创建的自定义表单:
class DeviceAdmin(admin.ModelAdmin): form = DeviceAdminForm # 绑定自定义表单 def save_model(self, request, obj, form, change): # 从form的cleaned_data中获取复选框的值 if form.cleaned_data.get('do_extra'): do_extra_actions() # 执行你的额外操作 super().save_model(request, obj, form, change)
这样一来,在Device的Admin编辑页面就会多出一个名为"执行额外操作"的复选框,当用户勾选并保存时,save_model里的额外操作代码就会被触发。
内容的提问来源于stack exchange,提问作者darkvodka
相关产品推荐
相关产品推荐

