Странное поведение сериализаторов Django [закрыто]
Попробую кратко описать текущую ситуацию:
я считаю, что более высокий уровень охвата этого метода не требуется для понимания ситуации, так как проблема лежит между синтаксисом?
Или просто плохое программирование с моей стороны:
У меня есть такой метод:
Точная работа этого устройства не очень полезна, так как оно создано для выполнения непонятного запроса, на плохо написанной структуре (не моя заслуга).
В первой части я создаю экземпляр FasiPrestazionali через Serializer; затем сохраняю этот экземпляр и копирую его в переменную fase_instance как fase_id. В последнее время я успешно использовал это здесь:
commessa.fase_prestazionale.add(fase_id)
Теперь я хочу знать, почему я повторяю то же самое, только с другой моделью.
fase_id = fase_instance.id
Django говорит мне, что fase_instance.id не существует?
class PreventivoStudioForm(generics.ListCreateAPIView):
queryset = PreventivoStudio.objects.all()
serializer_class = PreventivoStudioSerializer
authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]
#primo caso in presenza di commessa_id : creare un PreventivoStudio con i dati forniti e ciclare le fasi rendendole ciascuna una fasePrestazionale legata alla commessa fornita
def post(self, request, *args, **kwargs):
studio_id = request.data.get("id")
commessa_id = request.data.get("commessa_id")
if commessa_id:
commessa = Commesse.objects.get(id=commessa_id)
studio = Studio.objects.get(id=studio_id)
#riassociazione di 'fasi' dentro la request per ciclarli come FasiPrestazionali
fasi = request.data.pop('fasi')
#remove di undefined perchè causa problemi durante il salvataggio del serialized
request.data.pop('undefined')
request.data.pop('id')
PreventivoStudioSerializer.create(self,validated_data=request.data)
print('preventivoCreato')
print(fasi)
for fase in fasi:
print('dio scappato di casa')
fase_serializer = FasiPrestazionaliSerializer(data=fase)
fase_serializer.is_valid(raise_exception=True)
fase_instance = fase_serializer.save()
fase_id = fase_instance.id
print(fase_id)
commessa.fase_prestazionale.add(fase_id)
commessa.save()
return HttpResponse('preventivo e nuove fasi salvate con successo')
else:
print('commessa_id non presente')
request.data.pop('undefined')
request.data.pop('id')
fasi = request.data.pop('fasi')
nuovo_preventivo = PreventivoStudioSerializer.create(self,validated_data=request.data)
print('preventivoCreato', nuovo_preventivo)
custom_obj = {
"nome_commesse": nuovo_preventivo.nome,
"descrizione": nuovo_preventivo.descrizione,
}
nuova_commessa = CommesseSerializer.create(self, validated_data=custom_obj)
commessa_instance = nuova_commessa.save()
nuova_commessa_id = nuova_commessa.id
for fase in fasi:
fase_serializer = FasiPrestazionaliSerializer(data=fase)
fase_serializer.is_valid(raise_exception=True)
fase_instance = fase_serializer.save()
fase_id = fase_instance.id
nuova_commessa.fase_prestazionale.add(fase_id)
nuova_commessa.save()
nuovo_preventivo.save(
commessa = nuova_commessa_id
)
return HttpResponse('sei un fallimmento')
Я пытался обратиться к fase_serializer, чтобы проверить, что внутри, но Django троллит меня и возвращает только имя только что созданной модели. Кроме того, я начал работать с Django всего 2 месяца назад, и этот проект не помогает понять, что, черт возьми, происходит.