text: from django_celery_beat.models import IntervalSchedule, CrontabSchedule, PeriodicTask
  from rest_framework import serializers
  
  from ..op_drf.serializers import CustomModelSerializer
  from ..utils.exceptions import APIException
  
  
  class IntervalScheduleSerializer(CustomModelSerializer):
      class Meta:
          model = IntervalSchedule
          fields = '__all__'
  
  
  class CrontabScheduleSerializer(CustomModelSerializer):
  
      def save(self, **kwargs):
          queryset = CrontabSchedule.objects.filter(**self.validated_data)
          if queryset.count() and (
                  queryset.count() == 1 and self.initial_data.get('id', None) not in queryset.values_list('id',
                                                                                                          flat=True)):
              raise APIException(message='值已存在!!!')
          super().save(**kwargs)
  
      class Meta:
          model = CrontabSchedule
          exclude = ('timezone',)
  
  
  class PeriodicTaskSerializer(CustomModelSerializer):
      interval_list = serializers.SerializerMethodField(read_only=True)
      crontab_list = serializers.SerializerMethodField(read_only=True)
  
      def get_interval_list(self, obj):
          return IntervalScheduleSerializer(obj.interval).data if obj.interval else {}
  
      def get_crontab_list(self, obj):
          return CrontabScheduleSerializer(obj.crontab).data if obj.crontab else {}
  
      class Meta:
          model = PeriodicTask
          fields = '__all__'
  