Files
Django/config/serializers.py

32 lines
1.0 KiB
Python

#微信小程序弹窗组件
from rest_framework import serializers
from .models import PopupImage, PopupConfig
class PopupImageSerializer(serializers.ModelSerializer):
class Meta:
model = PopupImage
fields = ['url', 'text'] # 注意:前端需要 url 字段,我们序列化时映射 image_url -> url
# 手动处理字段名映射
url = serializers.CharField(source='image_url')
class PopupConfigSerializer(serializers.ModelSerializer):
images = PopupImageSerializer(many=True, read_only=True)
strategy = serializers.SerializerMethodField()
class Meta:
model = PopupConfig
fields = ['popup_id', 'title', 'duration', 'force_even_muted', 'images', 'strategy']
def get_strategy(self, obj):
# 组装前端需要的 strategy 对象
strategy = {
'type': obj.strategy_type,
'maxCount': obj.max_count,
}
if obj.reset_interval:
strategy['resetInterval'] = obj.reset_interval
return strategy