filter.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. from django_filters import FilterSet
  2. from .models import flowModel
  3. from django_filters import rest_framework as filters
  4. from container.models import MaterialChangeHistory,batchLogModel,ContainerDetailLogModel
  5. class FlowFilter(FilterSet):
  6. class Meta:
  7. model = flowModel
  8. fields = {
  9. 'document_date': ['exact', 'range'],
  10. 'document_number': ['exact', 'icontains'],
  11. 'document_type': ['exact', 'icontains'],
  12. 'business_type': ['exact', 'icontains'],
  13. 'iout_type': ['exact', 'icontains'],
  14. 'department': ['exact', 'icontains'],
  15. 'warehouse_code': ['exact', 'icontains'],
  16. 'warehouse_name': ['exact', 'icontains'],
  17. 'goods_code': ['exact', 'icontains'],
  18. 'goods_desc': ['exact', 'icontains'],
  19. 'goods_std': ['exact', 'icontains'],
  20. 'goods_batch': ['exact', 'icontains'],
  21. 'in_batch': ['exact', 'icontains'],
  22. 'out_batch': ['exact', 'icontains'],
  23. 'goods_in': ['exact', 'gt', 'lt', 'gte', 'lte'],
  24. 'goods_out': ['exact', 'gt', 'lt', 'gte', 'lte'],
  25. 'goods_notes': ['exact', 'icontains'],
  26. 'creator': ['exact', 'icontains']
  27. }
  28. class MaterialChangeHistoryFilter(FilterSet):
  29. batchLogModel_batch_code = filters.CharFilter(field_name='batch_log__bound_number', lookup_expr='icontains')
  30. class Meta:
  31. model = MaterialChangeHistory
  32. fields = {
  33. 'batch_log': ['exact'],
  34. 'goods_code': ['exact', 'icontains'],
  35. 'goods_desc': ['exact', 'icontains'],
  36. 'goods_std': ['exact', 'icontains'],
  37. 'goods_unit': ['exact', 'icontains'],
  38. 'change_time': ['exact', 'range'],
  39. 'in_quantity': ['exact', 'gt', 'lt', 'gte', 'lte'],
  40. 'out_quantity': ['exact', 'gt', 'lt', 'gte', 'lte'],
  41. 'change_type': ['exact', 'icontains'],
  42. 'opening_quantity': ['exact', 'gt', 'lt', 'gte', 'lte'],
  43. 'closing_quantity': ['exact', 'gt', 'lt', 'gte', 'lte']
  44. }
  45. class batchLogFilter(FilterSet):
  46. batch_code__icontains = filters.CharFilter(field_name='batch__bound_number', lookup_expr='icontains')
  47. bound_code__icontains = filters.CharFilter(field_name='bound__bound_code', lookup_expr='icontains')
  48. class Meta:
  49. model = batchLogModel
  50. fields = {
  51. "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  52. "bound": ['exact'],
  53. "batch": ['exact'],
  54. "log_type": ['exact', 'icontains'],
  55. "goods_code": ['exact', 'icontains'],
  56. "goods_desc": ['exact', 'icontains'],
  57. "goods_in_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  58. "goods_out_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  59. "detail_logs": ['exact'],
  60. "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  61. }
  62. class ContainerDetailLogFilter(FilterSet):
  63. goods_code = filters.CharFilter(field_name='container_detail__goods_code', lookup_expr='exact')
  64. goods_code__icontains = filters.CharFilter(field_name='container_detail__goods_code', lookup_expr='icontains')
  65. container_code = filters.CharFilter(field_name='container_detail__container__container_code', lookup_expr='exact')
  66. batch = filters.CharFilter(field_name='container_detail__batch__bound_number', lookup_expr='exact')
  67. batch__icontains = filters.CharFilter(field_name='container_detail__batch__bound_number', lookup_expr='icontains')
  68. class Meta:
  69. model = ContainerDetailLogModel
  70. fields = {
  71. "id": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  72. "container_detail": ['exact'],
  73. "log_type": ['exact', 'icontains'],
  74. "old_goods_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  75. "old_goods_out_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  76. "old_status": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  77. "new_goods_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  78. "new_goods_out_qty": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  79. "new_status": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
  80. "creater": ['exact', 'icontains'],
  81. "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
  82. }