CMDB资产管理系统开发【day26】:Django admin
想实现的是一个表里面的字段 选择性的出现在菜单栏
1、如何自定义菜单
自定义菜单前

在asset\admin.py里添加如下代码:
class NewAssetApprovalZoneAdmin(admin.ModelAdmin):
list_display = ('sn','asset_type','manufactory','model','cpu_model','cpu_count','cpu_core_count','ram_size','os_distribution','os_release','date','approved','approved_by','approved_date')
'''
横着依次显示:'sn','asset_type',...省略'approved_by','approved_date'
'''
admin.site.register(models.NewAssetApprovalZone,NewAssetApprovalZoneAdmin)
'''只有添加了NewAssetApprovalZoneAdmin才会在后台里显示,要不然即使设置了也不显示'''
自定义菜单后

2、如何自定义搜索
在asset\admin.py里添加如下代码:
class EventLogAdmin(admin.ModelAdmin,BaseAdmin):
list_display = ('name','colored_event_type','asset','component','detail','date','user')
search_fields = ('asset',)
'''使用'asset'作为搜索'''
效果图

3、如何自定义过滤
在asset\admin.py里添加如下代码:
class EventLogAdmin(admin.ModelAdmin,BaseAdmin):
list_display = ('name','colored_event_type','asset','component','detail','date','user')
list_fields = ('asset','date')
'''使用'asset' date作为过滤'''
效果图

4、admin多对多
在asset\models.py里添加如下代码:
tags = models.ManyToManyField('Tag', blank=True)
fields_horizontal = ('tags',)
'''注意:这种只对多对多有效'''
在asset\admin.py里添加如下代码:
admin.site.register(models.Asset,AssetAdmin)
更改前

更改后

5、完成如下图显示的(效果下拉框,选择效果)

在asset\admin.py里添加如下代码:
class NewAssetApprovalZoneAdmin(admin.ModelAdmin):
.....省略
actions = ['approve_selected_objects']
def approve_selected_objects(modeladmin, request, queryset):
selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
ct = ContentType.objects.get_for_model(queryset.model)
return HttpResponseRedirect("/asset/new_assets/approval/?ct=%s&ids=%s" % (ct.pk, ",".join(selected)))
approve_selected_objects.short_description = "批准入库"
完成效果如下

上面的一点go就报错
为什么会报如下错误呢 ?因为你给了我三个,

那两个是什么东西?
actions = ['approve_selected_objects']
def approve_selected_objects(*args,**kargs):
print(*args,**kargs)
pass

一个是request的那个对象 一个是你选中那几个
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

浙公网安备 33010602011771号