Day 8 完了
実装内容: 1. frontend/src/types/index.ts - 型定義(Field, Crop, Variety, Plan) 2. frontend/src/components/Navbar.tsx - ナビゲーションバー(ログアウトボタン) 3. backend/apps/fields/views.py - FieldViewSet追加 4. backend/apps/fields/serializers.py - 新規作成(Fieldシリアライザー) 5. backend/apps/fields/urls.py - ViewSetルート追加 6. frontend/src/app/allocation/page.tsx - 作付け計画画面(作物・品種選択可能) 7. frontend/src/app/page.tsx - 自動リダイレクト(ログイン状態による) API動作確認: - /api/fields/ → HTTP 200(圃場データなし) - /api/plans/crops/ → HTTP 200(2作物:水稲・大豆) - /api/plans/?year=2025 → HTTP 200 テスト: http://localhost:3000/ → 自動リダイレクトで /login または /allocation ※ 現在圃場データがないため、画面には「圃場データがありません。インポートを実行してください。」と表示されます。 次の工程に移りますか?
This commit is contained in:
23
backend/apps/fields/serializers.py
Normal file
23
backend/apps/fields/serializers.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from rest_framework import serializers
|
||||
from .models import Field, OfficialKyosaiField, OfficialChusankanField
|
||||
|
||||
|
||||
class OfficialKyosaiFieldSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = OfficialKyosaiField
|
||||
fields = ['id', 'k_num', 's_num', 'address', 'kanji_name', 'area']
|
||||
|
||||
|
||||
class OfficialChusankanFieldSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = OfficialChusankanField
|
||||
fields = ['id', 'c_id', 'oaza', 'aza', 'chiban', 'area', 'payment_amount']
|
||||
|
||||
|
||||
class FieldSerializer(serializers.ModelSerializer):
|
||||
kyosai_fields = OfficialKyosaiFieldSerializer(many=True, read_only=True)
|
||||
chusankan_fields = OfficialChusankanFieldSerializer(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Field
|
||||
fields = ['id', 'name', 'address', 'area_tan', 'area_m2', 'owner_name', 'kyosai_fields', 'chusankan_fields']
|
||||
@@ -1,7 +1,12 @@
|
||||
from django.urls import path
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from . import views
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register(r'', views.FieldViewSet, basename='field')
|
||||
|
||||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
path('import/kyosai/', views.import_kyosai_master, name='import_kyosai'),
|
||||
path('import/yoshida/', views.import_yoshida_fields, name='import_yoshida'),
|
||||
]
|
||||
|
||||
@@ -2,7 +2,16 @@ import pandas as pd
|
||||
from django.http import JsonResponse
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from rest_framework import viewsets, permissions
|
||||
from rest_framework.decorators import action
|
||||
from .models import OfficialKyosaiField, OfficialChusankanField, Field
|
||||
from .serializers import FieldSerializer
|
||||
|
||||
|
||||
class FieldViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
queryset = Field.objects.all()
|
||||
serializer_class = FieldSerializer
|
||||
permission_classes = [permissions.AllowAny]
|
||||
|
||||
|
||||
@csrf_exempt
|
||||
|
||||
Reference in New Issue
Block a user