filter.py 4.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. from django_filters import FilterSet
  2. from .models import InboundBill, MaterialDetail ,OutboundBill ,OutMaterialDetail
  3. from django_filters import rest_framework as filters
  4. class OutboundBillFilter(FilterSet):
  5. class Meta:
  6. model = OutboundBill
  7. fields = {
  8. "billId": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  9. "number": ['exact', 'icontains'],
  10. "type": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range', 'icontains'],
  11. "date": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  12. "department": ['exact', 'icontains'],
  13. "warehouse": ['exact', 'icontains'],
  14. "creater": ['exact', 'icontains'],
  15. "note": ['exact', 'icontains'],
  16. "totalCount": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  17. "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  18. "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  19. "is_delete": ['exact'],
  20. "bound_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  21. "audit_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  22. "save_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  23. }
  24. class InboundBillFilter(FilterSet):
  25. class Meta:
  26. model = InboundBill
  27. fields = {
  28. "billId": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  29. "number": ['exact', 'icontains'],
  30. "type": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range', 'icontains'],
  31. "date": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  32. "department": ['exact', 'icontains'],
  33. "warehouse": ['exact', 'icontains'],
  34. "creater": ['exact', 'icontains'],
  35. "note": ['exact', 'icontains'],
  36. "totalCount": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  37. "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  38. "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  39. "is_delete": ['exact'],
  40. "bound_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  41. "audit_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  42. "save_status" : ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  43. }
  44. class MaterialDetailFilter(filters.FilterSet):
  45. # 修正字段引用为正确的 number 字段
  46. bound_billId_code__icontains = filters.CharFilter(
  47. field_name='bound_billId__number', # 使用正确的字段名
  48. lookup_expr='icontains', # 匹配 URL 参数的后缀
  49. label='入库单代码'
  50. )
  51. class Meta:
  52. model = MaterialDetail
  53. fields = {
  54. "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  55. "bound_billId": ['exact'],
  56. "entryIds": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  57. "production_batch": ['exact', 'icontains'],
  58. "material_goods_code": ['exact', 'icontains'],
  59. "material_batch_order": ['exact', 'icontains'],
  60. "goods_code": ['exact', 'icontains'],
  61. "goods_name": ['exact', 'icontains'],
  62. "goods_std": ['exact', 'icontains'],
  63. "goods_weight": ['exact', 'icontains'],
  64. "plan_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  65. "goods_total_weight": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  66. "goods_unit": ['exact', 'icontains'],
  67. "note": ['exact', 'icontains'],
  68. "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  69. "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  70. "is_delete": ['exact'],
  71. "status": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  72. }
  73. class OutMaterialDetailFilter(FilterSet):
  74. class Meta:
  75. model = OutMaterialDetail
  76. fields = {
  77. "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  78. "bound_billId": ['exact'],
  79. "entryIds": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  80. "production_batch": ['exact', 'icontains'],
  81. "goods_code": ['exact', 'icontains'],
  82. "goods_name": ['exact', 'icontains'],
  83. "goods_weight": ['exact', 'icontains'],
  84. "goods_out_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  85. "goods_total_weight": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  86. "goods_unit": ['exact', 'icontains'],
  87. "note": ['exact', 'icontains'],
  88. "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  89. "update_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  90. "is_delete": ['exact'],
  91. }