Files
keinasystem/backend/apps/plans/serializers.py
Akira 543de30b1c Day 5 の作付け計画API実装が完了しました。
実装内容
バグ修正
- fields/views.py: OfficialChusakanField → OfficialChusankanField
init_crops コマンド
 python manage.py init_crops
水稲: 5 varieties
大豆: 3 varieties
小麦: 2 varieties
そば: 2 varieties
とうきび: 1 varieties
serializers.py
- CropSerializer - 作物マスタ
- VarietySerializer - 品種マスタ
- PlanSerializer - 作付け計画(crop_name, variety_name, field_name 付き)
views.py
- CropViewSet, VarietyViewSet, PlanViewSet
- アクション: summary, copy_from_previous_year, get_crops_with_varieties
API エンドポイント
- /api/plans/crops/ - 作物一覧
- /api/plans/varieties/ - 品種一覧
- /api/plans/ - 作付け計画CRUD
- /api/plans/summary/?year=2025 - 集計
テスト結果
GET /api/plans/crops/ → 
GET /api/plans/ →  (空配列)
2026-02-15 12:10:38 +09:00

37 lines
1.0 KiB
Python

from rest_framework import serializers
from .models import Crop, Variety, Plan
class VarietySerializer(serializers.ModelSerializer):
class Meta:
model = Variety
fields = '__all__'
class CropSerializer(serializers.ModelSerializer):
varieties = VarietySerializer(many=True, read_only=True)
class Meta:
model = Crop
fields = '__all__'
class PlanSerializer(serializers.ModelSerializer):
crop_name = serializers.ReadOnlyField(source='crop.name')
variety_name = serializers.ReadOnlyField(source='variety.name')
field_name = serializers.ReadOnlyField(source='field.name')
class Meta:
model = Plan
fields = '__all__'
read_only_fields = ('id', 'created_at', 'updated_at')
def create(self, validated_data):
return Plan.objects.create(**validated_data)
def update(self, instance, validated_data):
for attr, value in validated_data.items():
setattr(instance, attr, value)
instance.save()
return instance