from django_filters import FilterSet from .models import InboundBill, MaterialDetail ,OutboundBill ,OutMaterialDetail from django_filters import rest_framework as filters class OutboundBillFilter(FilterSet): class Meta: model = OutboundBill fields = { "billId": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "number": ['exact', 'icontains'], "type": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range', 'icontains'], "date": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "department": ['exact', 'icontains'], "warehouse": ['exact', 'icontains'], "creater": ['exact', 'icontains'], "note": ['exact', 'icontains'], "totalCount": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "is_delete": ['exact'], "bound_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "audit_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "save_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], } class InboundBillFilter(FilterSet): class Meta: model = InboundBill fields = { "billId": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "number": ['exact', 'icontains'], "type": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range', 'icontains'], "date": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "department": ['exact', 'icontains'], "warehouse": ['exact', 'icontains'], "creater": ['exact', 'icontains'], "note": ['exact', 'icontains'], "totalCount": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "is_delete": ['exact'], "bound_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "audit_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "save_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], } class MaterialDetailFilter(filters.FilterSet): # 修正字段引用为正确的 number 字段 bound_billId_code__icontains = filters.CharFilter( field_name='bound_billId__number', # 使用正确的字段名 lookup_expr='icontains', # 匹配 URL 参数的后缀 label='入库单代码' ) class Meta: model = MaterialDetail fields = { "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "bound_billId": ['exact'], "entryIds": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "production_batch": ['exact', 'icontains'], "material_goods_code": ['exact', 'icontains'], "material_batch_order": ['exact', 'icontains'], "goods_code": ['exact', 'icontains'], "goods_name": ['exact', 'icontains'], "goods_std": ['exact', 'icontains'], "goods_weight": ['exact', 'icontains'], "plan_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "goods_total_weight": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "goods_unit": ['exact', 'icontains'], "note": ['exact', 'icontains'], "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "is_delete": ['exact'], "status": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], } class OutMaterialDetailFilter(FilterSet): class Meta: model = OutMaterialDetail fields = { "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "bound_billId": ['exact'], "entryIds": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "production_batch": ['exact', 'icontains'], "goods_code": ['exact', 'icontains'], "goods_name": ['exact', 'icontains'], "goods_weight": ['exact', 'icontains'], "goods_out_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "goods_total_weight": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'], "goods_unit": ['exact', 'icontains'], "note": ['exact', 'icontains'], "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'], "is_delete": ['exact'], }