Данные не сохраняются в базе данных ; неожиданные аргументы ключевых слов

Я прошел через многие решения, опубликованные на SO и в других местах, но столкнулся с той же проблемой. Я совсем новичок в django и пытаюсь понять, где я ошибаюсь

Я получаю следующую ошибку

TypeError: Basetable() получил неожиданные аргументы ключевого слова: 'CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents'

.

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

    jsonToUse = {
        "CompanyId": "320193",
        "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": [
            {
                "decimals": "-6",
                "unitRef": "usd",
                "value": "39789000000"
            },
            {
                "decimals": "-6",
                "unitRef": "usd",
                "value": "50224000000"
            },
            {
                "decimals": "-6",
                "unitRef": "usd",
                "value": "25913000000"
            },
            {
                "decimals": "-6",
                "unitRef": "usd",
                "value": "35929000000"
            }
        ]
    }

Модель:

class Basetable(models.Model):
    basetable_id = models.AutoField(primary_key=True)
    CompanyId = models.IntegerField()


class Cashcashequivalentsrestrictedcashandrestrictedcashequivalents(models.Model):
    cashcashequivalentsrestrictedcashandrestrictedcashequivalents_id = models.AutoField(
        primary_key=True)
    unitRef = models.CharField(max_length=100)
    value = models.CharField(max_length=100)
    decimals = models.IntegerField()
    basetable_id = models.ForeignKey(Basetable, on_delete=models.CASCADE)

Serializer:

class CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsSerializer(serializers.ModelSerializer):

    class Meta:
        model = Cashcashequivalentsrestrictedcashandrestrictedcashequivalents
        fields = ['decimals', 'unitRef', 'value']


class CashFlowSerializer(serializers.ModelSerializer):
    CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents = CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsSerializer(
        many=True)

    class Meta:
        model = Basetable
        fields = "__all__"

Вид:

.....#TRIMMED GET SYNTAX.....
check = CashFlowSerializer(data=jsonToUse)
if (check.is_valid(raise_exception=True)):
    print("ready to send to db")
    check.save()
return JsonResponse(jsonToUse, safe=False)

Я хочу сохранить данные в базе данных для предоставленного JSON

Посмотрите на полную трассировку ошибки, проблема в том, что вам нужно определить свой собственный метод create во вложенном сериализаторе:

TypeError: Got a `TypeError` when calling `Basetable.objects.create()`. 
This may be because you have a writable field on the serializer class that is not a valid argument to `Basetable.objects.create()`. 
You may need to make the field read-only, or override the CashFlowSerializer.create() method to handle this correctly.
...
TypeError: Basetable() got an unexpected keyword argument 'CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents'

Больше информации вы найдете в документации django-rest-framework Writable nested serializers .

По сути, итерация данных JSON и создание Cashequivalents объектов.

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