Возврат всех значений в Map To Model Serializer

У меня есть следующий JSON

jsonData = {'CompanyId': '320193', 'CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents': [{'decimals': '-6', 'unitRef': 'usd', 'period': {'instant': '2020-09-26'}, 'value': '39789000000'}, {'decimals': '-6', 'unitRef': 'usd', 'period': { 'instant': '2019-09-28'}, 'value': '50224000000'}, {'decimals': '-6', 'unitRef': 'usd', 'period': { 'instant': '2018-09-29'}, 'value': '25913000000'}, { 'decimals': '-6', 'unitRef': 'usd', 'period': { 'instant': '2021-09-25'}, 'value': '35929000000'}], 'NetIncomeLoss': [{'decimals': '-6', 'unitRef': 'usd', 'period': {'startDate': '2020-09-27', 'endDate': '2021-09-25'}, 'value': '94680000000'}, {'decimals': '-6', 'unitRef': 'usd', 'period': {'startDate': '2019-09-29', 'endDate': '2020-09-26'}, 'value': '57411000000'}, {'decimals': '-6', 'unitRef': 'usd', 'period': {'startDate': '2018-09-30', 'endDate': '2019-09-28'}, 'value': '55256000000'}, {'decimals': '-6', 'unitRef': 'usd', 'period': {'startDate': '2020-09-27', 'endDate': '2021-09-25'}, 'segment': {'dimension': 'us-gaap:StatementEquityComponentsAxis', 'value': 'us-gaap:RetainedEarningsMember'}, 'value': '94680000000'}, { 'decimals': '-6', 'unitRef': 'usd', 'period': {'startDate': '2019-09-29', 'endDate': '2020-09-26'}, 'segment': { 'dimension': 'us-gaap:StatementEquityComponentsAxis', 'value': 'us-gaap:RetainedEarningsMember'}, 'value': '57411000000'}, { 'decimals': '-6', 'unitRef': 'usd', 'period': {'startDate': '2018-09-30', 'endDate': '2019-09-28'}, 'segment': { 'dimension': 'us-gaap:StatementEquityComponentsAxis', 'value': 'us-gaap:RetainedEarningsMember'}, 'value': '55256000000'}]}

Модель:

class CashFlow(models.Model):
    Id = models.AutoField(primary_key=True)
    Decimal = models.TextField(null=True)
    UnitRef = models.TextField(null=True)
    Period = models.TextField(null=True)
    Value = models.TextField(null=True)
    CompanyId = models.TextField(null=True)
    CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents = models.TextField(
        null=True)
    NetIncomeLoss = models.TextField(null=True)

Serializer:

class CashFlowSerializer(serializers.ModelSerializer):
    CompanyId = serializers.CharField()
    PeriodInstant = serializers.CharField()
    PeriodStartDate = serializers.CharField()
    PeriodEndDate = serializers.CharField()
    Decimal = serializers.CharField()
    UnitRef = serializers.CharField()
    Value = serializers.CharField()
    CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents = serializers.CharField()
    NetIncomeLoss = serializers.CharField()

    class Meta:
        model = CashFlowTable
        fields = "__all__"

    def create(self, validated_data):
        print(**validated_data)
        CashFlowTable.objects.create(**validated_data)

Вид:

@csrf_exempt
def companyApiCall(request):
    if request.method == 'GET':
        jsonData = ''
        data = get10KDataGivenTicker('AAPL')
        allFilings = itemgetter('filings')(data)
        for item in allFilings:
            cik = itemgetter('cik')(item)
            linkToFilingDetails = itemgetter('linkToFilingDetails')(item)
            jsonData = get_data(cik, linkToFilingDetails,
                                "StatementsOfCashFlows")
        # print(jsonData)
        finalJson = fixData(jsonData)
        check = CashFlowSerializer(data=finalJson)
        if (check.is_valid(raise_exception=True)):
            print("ready to send to db")
            check.save()
        return JsonResponse(jsonData, safe=False)

def fixData(jsonData):
    jsonDump = json.dumps(jsonData)
    actualJson = json.loads(jsonDump)
    finalObject = {}
    finalObject['CompanyId'] = actualJson.get("CompanyId")
    CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents = actualJson.get(
        "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents")
    one = dataRepeat(CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents,"CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents")
    print(one)
    NetIncomeLoss = actualJson.get("NetIncomeLoss")
    dataRepeat(NetIncomeLoss, "NetIncomeLoss")
    return finalObject

def dataRepeat(item, property):
    final = {}
    for i in item:
        jsonObject = {}
        jsonObject['Decimals'] = i.get("decimals")
        jsonObject['UnitRef'] = i.get("unitRef")
        if (i.get("period").get("startDate")):
            jsonObject['PeriodStartDate'] = i.get("period").get("startDate")
        else:
            jsonObject['PeriodStartDate'] = None
        if (i.get("period").get("endDate")):
            jsonObject['PeriodEndDate'] = i.get("period").get("endDate")
        else:
            jsonObject['PeriodEndDate'] = None
        if (i.get("period").get("instant")):
            jsonObject['PeriodInstant'] = i.get("period").get("instant")
        else:
            jsonObject['PeriodInstant'] = None
        jsonObject[f"{property}"] = i.get("value")
        #jsonObject.update(jsonObject)
        #print(jsonObject)

ссылка на исполняемый файл : https://www.online-python.com/bUHIopzqam

Как я могу вернуть все данные из метода(ов), чтобы сделать полный JSON, чтобы я мог отправить его в сериализатор. В настоящее время, если я печатаю в методе dataReturn, я вижу все данные, но при возврате я получаю только одну запись. Как я могу исправить формат, чтобы он прошел через ModelSerializer? Я попробовал метод dict.update() для обновления объекта JSON, но он создал только новые словари. Я не уверен, правильно ли это?

Очень новичок в Django, любая помощь будет принята с благодарностью. Спасибо за ваше время.

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