Записываемые вложенные сериализаторы для нескольких элементов для одного базового класса

Я следую руководству по написанию вложенного сериализатора. Раньше у меня был только один элемент в json-объекте, который был CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents, и я смог правильно сохранить данные в базе данных. Я хочу добавить NetIncomeLoss тем же способом, но сталкиваюсь с проблемой, описанной ниже. Может ли кто-нибудь указать мне, где моя ошибка? Я не могу найти документацию/пример или ответ в Интернете

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

.

Serializer:

class PeriodSerializer(serializers.ModelSerializer):
    instant = serializers.CharField(required=False, max_length=255)
    startDate = serializers.CharField(required=False, max_length=255)
    endDate = serializers.CharField(required=False, max_length=255)

    class Meta:
        model = Period
        fields = "__all__"
        extra_kwargs = {'cashcashequivalentsrestrictedcashandrestrictedcashequivalents_id': {
            'required': False}, 'netincomeloss_id': {
            'required': False}}


class CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsSerializer(serializers.ModelSerializer):
    period = PeriodSerializer(many=False)

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


class NetIncomeLossSerializer(serializers.ModelSerializer):
    period = PeriodSerializer(many=False)

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


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

    class Meta:
        model = Basetable
        fields = "__all__"

    def create(self, validated_data):
        itemOneData = validated_data.pop(
            'CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents')
        cashflow = Basetable.objects.create(**validated_data)
        for data in itemOneData:
            period_data = data.pop("period")
            my_long_named_obj = Cashcashequivalentsrestrictedcashandrestrictedcashequivalents.objects.create(
                basetable_id=cashflow, **data)
            period_object = Period.objects.create(
                cashcashequivalentsrestrictedcashandrestrictedcashequivalents_id=my_long_named_obj, **period_data
            )

        itemTwoData = validated_data.pop(
            'NetIncomeLoss')
        cashflow = Basetable.objects.create(**validated_data)
        for data in itemTwoData:
            period_data = data.pop("period")
            my_long_named_obj = Netincomeloss.objects.create(
                basetable_id=cashflow, **data)
            period_object = Period.objects.create(
                netincomeloss_id=my_long_named_obj, **period_data
            )
        return cashflow

Модель:

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


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


class Netincomeloss(models.Model):
    netincomeloss_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)


class Period(models.Model):
    period = models.AutoField(primary_key=True)
    instant = models.CharField(blank=False, max_length=100)
    startDate = models.CharField(blank=False, max_length=255)
    endDate = models.CharField(blank=False, max_length=255)
    cashcashequivalentsrestrictedcashandrestrictedcashequivalents_id = models.OneToOneField(
        Cashcashequivalentsrestrictedcashandrestrictedcashequivalents, on_delete=models.CASCADE)
    netincomeloss_id = models.OneToOneField(
        Netincomeloss, on_delete=models.CASCADE)

Вид:

Спасибо за время и помощь

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