feat:cms relation hospital bug fix
This commit is contained in:
@@ -9,10 +9,15 @@ class CmsInstitutionSerializer(serializers.ModelSerializer):
|
||||
"""CMS 机构(医院)序列化器。
|
||||
|
||||
- `code` 显式声明以去掉默认 UniqueValidator,改用自定义错误码校验唯一性。
|
||||
- `banner_url` 返回可访问的完整 URL(未配置时为空串,便于管理端识别「未设图」)。
|
||||
- `banner_url` **可写**(新增/编辑可传,可选):入参可为静态相对路径(如
|
||||
`institutions/xxx.png`)或完整 `http(s)` URL;**输出**统一转为可访问的完整 URL
|
||||
(未配置时为空串,便于管理端识别「未设图」)。传空串则清空。
|
||||
"""
|
||||
code = serializers.CharField(max_length=100)
|
||||
banner_url = serializers.SerializerMethodField()
|
||||
banner_url = serializers.CharField(
|
||||
max_length=500, required=False, allow_blank=True,
|
||||
help_text='机构 Banner 图:相对静态路径或完整 http(s) URL;可选,传空串清空',
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Institution
|
||||
@@ -22,7 +27,12 @@ class CmsInstitutionSerializer(serializers.ModelSerializer):
|
||||
]
|
||||
read_only_fields = ['id', 'created_at', 'updated_at']
|
||||
|
||||
def get_banner_url(self, obj):
|
||||
def to_representation(self, instance):
|
||||
data = super().to_representation(instance)
|
||||
data['banner_url'] = self._full_banner_url(instance)
|
||||
return data
|
||||
|
||||
def _full_banner_url(self, obj):
|
||||
if not obj.banner_url:
|
||||
return ''
|
||||
value = obj.banner_url
|
||||
@@ -33,6 +43,9 @@ class CmsInstitutionSerializer(serializers.ModelSerializer):
|
||||
path = prefix + '/' + settings.STATIC_URL.strip('/') + '/' + value.lstrip('/')
|
||||
return request.build_absolute_uri(path) if request else path
|
||||
|
||||
def validate_banner_url(self, value):
|
||||
return (value or '').strip()
|
||||
|
||||
def validate_code(self, value):
|
||||
value = (value or '').strip()
|
||||
if not value:
|
||||
|
||||
Reference in New Issue
Block a user