Отсутствие извлеченных данных в связанной таблице/модели в django

У меня есть api, который будет извлекать данные фермера, теперь я извлек основной профиль, но не детали в посылках.

model.py

from django.db import models

class Farmer(models.Model):
    record_no = models.CharField(primary_key=True,max_length=19)
    control_no = models.CharField(max_length=50)
    fname = models.CharField(max_length=100)
    mname = models.CharField(max_length=100)
    lname = models.CharField(max_length=100)
    ename = models.CharField(max_length=100)
    sex = models.CharField(max_length=6)
    birthday = models.DateField(blank=True, null=True)
    arb = models.CharField(max_length=3)
    pwd = models.CharField(max_length=3)
    ben_4ps = models.CharField(max_length=3)
    ip = models.CharField(max_length=3)
    tribe_name = models.CharField(max_length=100)
    fca_mem = models.CharField(max_length=3)
    fca_name = models.CharField(max_length=200)
    house_no = models.CharField(max_length=100) 
    street = models.CharField(max_length=100) 
    region_code = models.CharField(max_length=2)
    region_shortname = models.CharField(max_length=50)
    region_longname = models.CharField(max_length=150)
    province_code = models.CharField(max_length=2)
    province_name = models.CharField(max_length=150)
    municipality_code = models.CharField(max_length=2)
    municipality_name = models.CharField(max_length=150)
    brgy_code = models.CharField(max_length=2)
    brgy_name = models.CharField(max_length=150)
    farm_size = models.DecimalField(max_digits=10,decimal_places=4)

    class Meta:
        managed = False
        db_table = 'farmers'

class Parcels(models.Model):
    record_no = models.ForeignKey(Farmer,null=True, db_column='record_no',on_delete=models.CASCADE)
    parcel_no = models.IntegerField()
    parcel_farm_area = models.DecimalField(max_digits=10,decimal_places=4)
    type_of_ownership = models.CharField(max_length=100)
    presented_doc = models.CharField(max_length=100)
    reg_name = models.CharField(max_length=100)
    prov_name = models.CharField(max_length=100)
    mun_name = models.CharField(max_length=100)
    bgy_name = models.CharField(max_length=100)

    class Meta:
        managed = False
        db_table = 'parcels'

serializers.py

from rest_framework import serializers
from .models import Farmers, Parcels

class ParcelDetailSerializer(serializers.ModelSerializer):
    class Meta:
        model = Parcels
        fields = ['record_no','parcel_no','parcel_farm_area','type_of_ownership','presented_doc','reg_name','prov_name','mun_name','bgy_name']

class FarmerDetailSerializer(serializers.ModelSerializer):
    parcels = ParcelDetailSerializer(many=True, read_only=True)

    class Meta: 
        model = Farmers
        fields = ['control_no','record_no','fname','mname','lname','ename','sex','birthday','arb','pwd','ben_4ps','ip','tribe_name','fca_mem','fca_name','house_no','street','region_code','region_shortname','region_longname','province_code','province_name','municipality_code','municipality_name','brgy_code','brgy_name','farm_size','parcels']

views.py

from django.shortcuts import render
from rest_framework.decorators import api_view, permission_classes
from rest_framework.response import Response
from rest_framework.generics import get_object_or_404
from .models import Farmers
from .serializers import FarmerDetailSerializer

@api_view(['GET'])
def farmerDetails(request):
        first_name  = request.GET.get("fname")
        middle_name = request.GET.get("mname")
        last_name   = request.GET.get("lname")
        birthday    = request.GET.get("birthdate")

        details = Farmers.objects.using("farmers_db").filter(fname=first_name, mname=middle_name, lname=last_name, birthday=birthday)

        detailSerializer = FarmerDetailSerializer(details, many=True)

        return Response(detailSerializer.data)

вывод будет

[
  {
      "control_no": "01-01-33-030-070000",
      "record_no": "01-33-03-007-000001",
      "fname": "ALBERT",
      "mname": "PASCUA",
      "lname": "MARTINEZ",
      "ename": "",
      "sex": "MALE",
      "birthday": "1963-12-09",
      "arb": "NO",
      "pwd": "NO",
      "ben_4ps": "NO",
      "ip": "NO",
      "tribe_name": null,
      "fca_mem": "NO",
      "fca_name": null,
      "house_no": "",
      "street": "BARORO",
      "region_code": "01",
      "region_shortname": "RFO I",
      "region_longname": "REGION I (ILOCOS REGION)",
      "province_code": "33",
      "province_name": "LA UNION",
      "municipality_code": "03",
      "municipality_name": "BACNOTAN",
      "brgy_code": "007",
      "brgy_name": "Baroro",
      "farm_size": "0.8500"
      #there should be data of parcels here with many records
  }
]

Как вы можете видеть на выходе, нет атрибута parcel, хотя я добавил его в сериализаторе, а затем установил models.ForeignKey в модели. Как я могу правильно получить основной профиль вместе со связанной моделью, используя Foreignkey в сериализаторе?

Вернуться на верх