#12 対応を入れました。

畔塗記録 API に total_area_tan を追加して、一覧の各記録に「圃場数 / 面積合計」が出るようにしました。あわせて、作成・編集フォームの「対象圃場一覧」にも、選択中の合計面積を表示しています。主な変更は serializers.py、tests.py、page.tsx、index.ts です。

確認できたこと:

docker compose -f docker-compose.develop.yml exec backend python manage.py test apps.levee_work OK
docker exec keinasystem_frontend npm run build OK
まだコミットはしていません。必要ならこのままコミットして push します。
This commit is contained in:
akira
2026-04-06 17:23:06 +09:00
parent c90c6210e1
commit 4a1db5ef27
4 changed files with 76 additions and 2 deletions

View File

@@ -1,4 +1,5 @@
from django.db import transaction
from decimal import Decimal
from rest_framework import serializers
from apps.plans.models import Plan
@@ -34,6 +35,7 @@ class LeveeWorkSessionSerializer(serializers.ModelSerializer):
items = LeveeWorkSessionItemReadSerializer(many=True, read_only=True)
work_record_id = serializers.IntegerField(source='work_record.id', read_only=True)
item_count = serializers.SerializerMethodField()
total_area_tan = serializers.SerializerMethodField()
class Meta:
model = LeveeWorkSession
@@ -45,6 +47,7 @@ class LeveeWorkSessionSerializer(serializers.ModelSerializer):
'notes',
'work_record_id',
'item_count',
'total_area_tan',
'items',
'created_at',
'updated_at',
@@ -53,6 +56,10 @@ class LeveeWorkSessionSerializer(serializers.ModelSerializer):
def get_item_count(self, obj):
return len(obj.items.all())
def get_total_area_tan(self, obj):
total = sum((item.field.area_tan or Decimal('0')) for item in obj.items.all())
return str(total)
class LeveeWorkSessionItemWriteInputSerializer(serializers.Serializer):
field = serializers.IntegerField()