Повторение кода 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. Как я могу сократить свой код?
Спасибо за ваше время и помощь.