32 lines
1.0 KiB
Python
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 |