forked from erp-dev/erp
feat: upload api
This commit is contained in:
@@ -3,6 +3,7 @@ from decimal import Decimal
|
||||
from typing import List, Dict, Any
|
||||
from stock import models as stock_models
|
||||
from basic_info import models as basic_info_models
|
||||
from . import models as api_models
|
||||
|
||||
|
||||
class ProductStockChangeSerializer(serializers.Serializer):
|
||||
@@ -90,4 +91,47 @@ class SetMerchantAutoCompleteStockChangeSerializer(serializers.Serializer):
|
||||
"""设置商户自动确认库存变动序列化器"""
|
||||
auto_complete = serializers.BooleanField(
|
||||
help_text="是否自动确认库存变动"
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
# ==================== 通用文件上传序列化器 ====================
|
||||
|
||||
class UploadedFileSerializer(serializers.ModelSerializer):
|
||||
"""上传文件序列化器"""
|
||||
file_url = serializers.SerializerMethodField()
|
||||
owner_username = serializers.CharField(source='owner.username', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = api_models.UploadedFile
|
||||
fields = [
|
||||
'id', 'path', 'file_url', 'original_filename', 'file_size',
|
||||
'content_type', 'owner', 'owner_username', 'is_deleted',
|
||||
'created_at', 'updated_at'
|
||||
]
|
||||
read_only_fields = ['id', 'owner', 'file_size', 'content_type', 'created_at', 'updated_at']
|
||||
|
||||
def get_file_url(self, obj):
|
||||
"""获取文件完整URL"""
|
||||
if obj.path:
|
||||
request = self.context.get('request')
|
||||
if request:
|
||||
return request.build_absolute_uri(obj.path.url)
|
||||
return obj.path.url
|
||||
return None
|
||||
|
||||
|
||||
class FileUploadSerializer(serializers.Serializer):
|
||||
"""文件上传请求序列化器"""
|
||||
file = serializers.FileField(
|
||||
required=True,
|
||||
help_text='要上传的文件'
|
||||
)
|
||||
|
||||
def validate_file(self, value):
|
||||
"""验证文件"""
|
||||
# 限制文件大小为 100MB
|
||||
max_size = 100 * 1024 * 1024
|
||||
if value.size > max_size:
|
||||
raise serializers.ValidationError(f'文件大小不能超过 {max_size // (1024*1024)}MB')
|
||||
|
||||
return value
|
||||
Reference in New Issue
Block a user