Повторение кода Django из-за множественных объектов в JSON

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

У меня около 30 сериализаторов (вставляю 3, чтобы сократить код)

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

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


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

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


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

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

class CashFlowSerializer(serializers.ModelSerializer):
    FirstItemInJson = FirstOne(many=True)
    SecondItemInJson = SecondOne(many=True)
    ThirdItemInJson = ThirdOne(many=True)

class Meta:
    model = Basetable
    fields = "__all__"

def create(self, validated_data):
    itemOneData = validated_data.pop('FirstItemInJson')
    itemTwoData = validated_data.pop('SecondItemInJson')
    itemThreeData = validated_data.pop('ThirdItemInJson')
cashflow = Basetable.objects.create(**validated_data)
for data in itemOneData:
    period_data = data.pop("period")
    dataObj = FirstItemModelClass.objects.create(
        basetable_id=cashflow, **data)
    period_object = Period.objects.create(
        firstItem_id=dataObj, **period_data)
for data in itemTwoData:
    period_data = data.pop("period")
    dataObj = SecondItemModelClass.objects.create(
        basetable_id=cashflow, **data)
    period_object = Period.objects.create(
        secondItem_id=dataObj, **period_data)
for data in itemThreeData:
    period_data = data.pop("period")
    dataObj = ThirdItemModelClass.objects.create(
        basetable_id=cashflow, **data)
    period_object = Period.objects.create(
        thirdItem_id=dataObj, **period_data)

JSON: (обрезано, чтобы сделать его короче)

Учитывая, что у меня есть 30 элементов в моем JSON, в настоящее время я просматриваю каждый элемент с помощью цикла for, чтобы сохранить в нем данные Period. Как я могу сократить свой код?

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

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