У меня есть объектная модель Candidates в Django Application, которую я получаю из формы во Front End.
Если этот кандидат повторно отправит личные данные с тем же адресом электронной почты, ответ DRF {"email": ["Пользователь с таким адресом электронной почты уже существует."]} и не сохранит форму.
Идея состоит в том, что если этот кандидат отправит форму еще раз с личным адресом электронной почты, и я сохраню ее в своей базе данных, я обновлю личные данные этого кандидата.
Я пытался:
Мой взгляд:
@csrf_exempt
@api_view(['GET', 'POST','PATCH'])
def CandidatesCreate(request, *args, **kwargs):
parser_classes = (FileUploadParser,)
if request.method == 'PATCH' or request.method == 'POST':
serializer = CandidatesSerializer(data=request.data)
if serializer.is_valid():
instance, created = serializer.get_or_create()
if not created:
serializer.update(instance, serializer.validated_data)
return Response(serializer.data, status=status.HTTP_202_ACCEPTED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Мой сериализатор
class CandidatesSerializer(serializers.ModelSerializer):
cv = serializers.FileField(required=False,max_length=None, use_url=True)
class Meta:
model = Candidates
fields = (
'pk',
'user',
'name',
'email',
'whatever',
'whatever'
)
Однако, он не работает. Я не уверен если get_or_create () устарела, если честно. Я не нашел реальной информации об этом.