Skip to content

Commit 49dbf6f

Browse files
committed
feat: add LogoField serializer to handle string URLs and multipart file uploads for portal logo
1 parent e9b7f4f commit 49dbf6f

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

‎apps/portal/serializers/portal.py‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@
3333
system_version, system_get_key = Cache_Version.SYSTEM.value
3434

3535

36+
class LogoField(serializers.CharField):
37+
"""门户Logo字段,兼容字符串URL(JSON)与 multipart 上传文件"""
38+
39+
def to_internal_value(self, data):
40+
if data is not None and hasattr(data, "read"):
41+
# multipart 上传的文件对象(InMemoryUploadedFile / TemporaryUploadedFile)
42+
return data
43+
return super().to_internal_value(data)
44+
45+
3646
class PortalSerializer(serializers.Serializer):
3747
name = serializers.CharField(required=False, label=_("portal name"), help_text=_("portal name"))
3848
description = serializers.CharField(
@@ -42,7 +52,7 @@ class PortalSerializer(serializers.Serializer):
4252
label=_("portal description"),
4353
help_text=_("portal description"),
4454
)
45-
logo = serializers.CharField(
55+
logo = LogoField(
4656
required=False, allow_null=True, allow_blank=True, label=_("portal logo"), help_text=_("portal logo")
4757
)
4858
enable_public_access = serializers.BooleanField(

0 commit comments

Comments
 (0)