55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
#backend/crud_demo/serializers.py
|
|
|
|
from crud_book.models import CrudBookModel
|
|
from dvadmin.utils.serializers import CustomModelSerializer
|
|
from rest_framework import serializers
|
|
from django.conf import settings
|
|
|
|
|
|
class CrudBookModelSerializer(CustomModelSerializer):
|
|
"""
|
|
序列化器
|
|
"""
|
|
# 添加SerializerMethodField来处理image字段
|
|
image = serializers.SerializerMethodField()
|
|
location = serializers.SerializerMethodField()
|
|
|
|
def get_image(self, obj):
|
|
"""
|
|
获取完整的图片URL
|
|
"""
|
|
if obj.image:
|
|
# 检查image是否已经是完整的URL
|
|
if obj.image.startswith(('http://', 'https://')):
|
|
return obj.image
|
|
# 否则添加MEDIA_URL前缀
|
|
return settings.API_URL + obj.image
|
|
return None
|
|
|
|
def get_location(self, obj):
|
|
"""
|
|
获取完整的图书URL
|
|
"""
|
|
if obj.location:
|
|
# 检查location是否已经是完整的URL
|
|
if obj.location.startswith(('http://', 'https://')):
|
|
return obj.location
|
|
# 否则添加MEDIA_URL前缀
|
|
return settings.API_URL + obj.location
|
|
return None
|
|
|
|
|
|
#这里是进行了序列化模型及所有的字段
|
|
class Meta:
|
|
model = CrudBookModel
|
|
fields = "__all__"
|
|
|
|
#这里是创建/更新时的列化器
|
|
class CrudBookModelCreateUpdateSerializer(CustomModelSerializer):
|
|
"""
|
|
创建/更新时的列化器
|
|
"""
|
|
|
|
class Meta:
|
|
model = CrudBookModel
|
|
fields = '__all__' |