serializers.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from rest_framework import serializers
  2. from .models import DeviceModel,LocationModel,LocationGroupModel,LocationContainerLink,LocationChangeLog
  3. from container.models import ContainerListModel
  4. class ContainerSimpleSerializer(serializers.ModelSerializer):
  5. class Meta:
  6. model = ContainerListModel
  7. # fields = ['id', 'container_code', 'status'] # 按需选择字段
  8. fields = '__all__' # 或者展示全部字段
  9. class LocationSerializer(serializers.ModelSerializer):
  10. class Meta:
  11. model = LocationModel
  12. fields = '__all__'
  13. class LocationListSerializer(serializers.ModelSerializer):
  14. current_containers = ContainerSimpleSerializer(
  15. many=True,
  16. source='get_active_containers',
  17. read_only=True
  18. )
  19. class Meta:
  20. model = LocationModel
  21. fields = '__all__'
  22. read_only_fields = ['id']
  23. class LocationPostSerializer(serializers.ModelSerializer):
  24. class Meta:
  25. model = LocationModel
  26. fields = '__all__'
  27. read_only_fields = ['id','row','col','layer', 'max_capacity', 'current_quantity', 'coordinate','access_priority','location_code','location_group','location_type','is_active','shelf_type']
  28. class LocationGroupSerializer(serializers.ModelSerializer):
  29. class Meta:
  30. model = LocationGroupModel
  31. fields = '__all__'
  32. read_only_fields = ['id']
  33. class LocationGroupListSerializer(serializers.ModelSerializer ):
  34. class Meta:
  35. model = LocationGroupModel
  36. fields = '__all__'
  37. read_only_fields = ['id ']
  38. class LocationGroupPostSerializer(serializers.ModelSerializer):
  39. class Meta:
  40. model = LocationGroupModel
  41. fields = '__all__'
  42. read_only_fields = ['id']
  43. extra_kwargs = {
  44. 'current_goods_code': {'required': False, 'allow_blank': True},
  45. 'current_batch': {'required': False, 'allow_blank': True},
  46. }
  47. class LocationContainerLinkSerializer(serializers.ModelSerializer):
  48. """库位-托盘关联序列化器"""
  49. container = ContainerSimpleSerializer(read_only=True)
  50. container_code = serializers.CharField(source='container.container_code', read_only=True)
  51. location_code = serializers.CharField(source='location.location_code', read_only=True)
  52. class Meta:
  53. model = LocationContainerLink
  54. fields = ['id', 'location', 'location_code', 'container', 'container_code', 'is_active', 'put_time', 'operator']
  55. read_only_fields = ['id', 'put_time']