这里有点体会,xadmin中可以对同一个model表格,使用***Admin的queryset()方法实现删选。这个功能老师讲课时说了可以在queryset的filter中设置自己的删选逻辑,这里正好我用上:要把近30天需要校验的设备单独列出来qs = qs.filter(next_cal_date__lte=datetime.now() + cal_interval)。 这个功能真是好。
class Plan2CaliEquipmentAdmin(object):
list_display = ['item', 'name', 'desc', 'detail','is_banner', 'sn', 'asset_num', 'type', 'team', 'responsible_person', 'fav_nums',
'click_nums', 'reserve_times', 'tag', 'image', 'cal_date', 'next_cal_date', 'manufacturer', 'location', 'status', 'add_time',
'get_resource_nums', 'go_to']
search_fields = ['item', 'name', 'desc', 'detail','is_banner', 'sn', 'asset_num', 'type', 'team', 'responsible_person', 'fav_nums',
'click_nums', 'reserve_times', 'tag', 'image', 'cal_date', 'next_cal_date', 'manufacturer', 'location', 'status',
'get_resource_nums', 'go_to']
list_filter = ['item', 'name', 'desc', 'detail', 'is_banner', 'sn', 'asset_num', 'type', 'team', 'responsible_person', 'fav_nums',
'click_nums', 'reserve_times', 'tag', 'image', 'cal_date', 'next_cal_date', 'manufacturer', 'location', 'status', 'add_time',
] # get_resource_nums不能写在这里
ordering = ['-click_nums'] #进入xadmin后默认以点击数排序
readonly_fields = ['click_nums', 'fav_nums', 'reserve_times']
# exclude = ['fav_nums'] #这个字段不显示在 点击这个设备后的页面中 exclude、readonly_fields互相矛盾的
list_editable = ['cal_date', 'next_cal_date']
inlines = [EquipmentResourceInline, EquipmentVideoInline]
# refresh_times = [3, 5]
def queryset(self):
qs = super(Plan2CaliEquipmentAdmin, self).queryset()
cal_interval = timedelta(days=30)
qs = qs.filter(next_cal_date__lte=datetime.now() + cal_interval)
return qs