Я пытаюсь добавить данные в свою базу данных. С этой целью у меня есть функция vue:
@api_view(['POST'])
def update_add_bges(request):
serializer = BGESSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
, которая вызывает сериализатор для добавления новых данных в базу данных:
class BGESSerializer(serializers.ModelSerializer):
laboratoire = LaboratoiresSerializer()
class Meta:
model = BGES
fields = '__all__'
def create(self, validated_data):
laboratoire_data = validated_data.pop('laboratoire')
laboratoire_oj = Laboratoire.objects.create(**laboratoire_data)
validated_data["laboratoire"] = laboratoire_obj["pk"]
bges = BGES.objects.create(**validated_data)
return bges
Проблема заключается в том, что мой Laboratoire classe также является вложенным и должен добавлять экземпляры из другого класса:
class LaboratoiresSerializer(serializers.ModelSerializer):
tutelles = TutellesSerializer(many=True)
class Meta:
model = Laboratoire
fields = '__all__'
def create(self, validated_data):
tutelles_data = validated_data.pop('tutelles')
laboratoire = Laboratoire.objects.create(**validated_data)
for tutelle_data in tutelles_data:
t = Tutelle.objects.get(nom=tutelle_data["nom"])
laboratoire.tutelles.add(t)
return laboratoire
Это не работает, потому что не вызывается, так как это создание сериализатора, а не создание моделей. Как я должен сделать? Когда я добавляю Laboratoire, у меня есть Tutelle для создания ... Должен ли я реализовать создание в моделях? Поскольку я новичок в django, мне трудно понять тонкость вызовов функций.