57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
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)
|