from rest_framework import serializers from .models import SensorData, SensorParameter class SensorDataUpdateSerializer(serializers.Serializer): """سریالایزر ورودی برای آپدیت داده سنسور.""" location_id = serializers.IntegerField(required=True) soil_moisture = serializers.FloatField(required=False, allow_null=True) soil_temperature = serializers.FloatField(required=False, allow_null=True) soil_ph = serializers.FloatField(required=False, allow_null=True) electrical_conductivity = serializers.FloatField(required=False, allow_null=True) nitrogen = serializers.FloatField(required=False, allow_null=True) phosphorus = serializers.FloatField(required=False, allow_null=True) potassium = serializers.FloatField(required=False, allow_null=True) plant_ids = serializers.ListField( child=serializers.IntegerField(), required=False, help_text="لیست شناسه گیاهان مرتبط", ) class SensorDataResponseSerializer(serializers.ModelSerializer): """سریالایزر خروجی برای SensorData.""" plant_ids = serializers.PrimaryKeyRelatedField( source="plants", many=True, read_only=True, ) class Meta: model = SensorData fields = [ "uuid_sensor", "location_id", "soil_moisture", "soil_temperature", "soil_ph", "electrical_conductivity", "nitrogen", "phosphorus", "potassium", "plant_ids", "created_at", "updated_at", ] class SensorParameterSerializer(serializers.Serializer): """سریالایزر ورودی برای اضافه کردن پارامتر جدید.""" code = serializers.CharField(max_length=64) name_fa = serializers.CharField(max_length=128) unit = serializers.CharField(max_length=32, required=False, allow_blank=True)