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/ → ✅ (空配列)
This commit is contained in:
36
backend/apps/plans/serializers.py
Normal file
36
backend/apps/plans/serializers.py
Normal file
@@ -0,0 +1,36 @@
|
||||
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
|
||||
Reference in New Issue
Block a user