from apps.utils.serializers import CustomModelSerializer from apps.enm.models import Mpoint, MpLog, MpointStat from apps.utils.constants import EXCLUDE_FIELDS from rest_framework import serializers from apps.mtm.models import Mgroup class MpointSerializer(CustomModelSerializer): mgroup = serializers.PrimaryKeyRelatedField(label="测点集", queryset=Mgroup.objects.all(), required=True) mgroup_name = serializers.CharField(source='mgroup.name', read_only=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) ep_monitored_name = serializers.CharField(source='ep_monitored.name', read_only=True) ep_belong_name = serializers.CharField(source='ep_belong.name', read_only=True) class Meta: model = Mpoint fields = '__all__' read_only_fields = EXCLUDE_FIELDS + ['belong_dept'] def validate(self, attrs): attrs['belong_dept'] = attrs['mgroup'].belong_dept return attrs class MpLogSerializer(CustomModelSerializer): mpoint_name = serializers.CharField(source='mpoint.name', read_only=True) class Meta: model = MpLog fields = '__all__' read_only_fields = EXCLUDE_FIELDS + ['mpoint_name'] class MpointStatSerializer(CustomModelSerializer): mpoint_name = serializers.CharField(source='mpoint.name', read_only=True) class Meta: model = MpointStat fields = '__all__'