from rest_framework import serializers, status from rest_framework.exceptions import ValidationError from apps.patient.models import Patient class PatientSerializer(serializers.ModelSerializer): class Meta: model = Patient fields = '__all__' extra_kwargs = { 'owners': {'required': False} } def create(self, validated_data): user = self.context['request'].user name = validated_data['name'] exists = Patient.objects.filter(owners=user).filter(name=name) if len(exists) > 0: raise ValidationError(detail="Patient with name "+name+" already exists", code=status.HTTP_400_BAD_REQUEST) patient = Patient.objects.create( name=validated_data['name'] ) patient.owners.set([user]) patient.save() return patient # def update(self, instance, validated_data): # if isinstance(instance, Patient): # if 'name' in validated_data: # instance.name = validated_data['name'] # if 'owners' in validated_data: # result = instance.owners.all() # list_result = [entry for entry in result] # list_result.append(validated_data['owners']) # instance.owners.set(list_result) # # list_owner = instance.owners.all() # # list_owner.union(validated_data['owners']) # # listOwners.add(validated_data['owners']) # # instance.owners.set(instance.owners.all() | validated_data['owners']) #.add(validated_data['owners']) # instance.save() # return instance # # patient = (Patient)instance # # user = self.context['request'].user # # if user in instance.owners.all(): # # instance.name = validated_data['name'] # # instance.save() # # return instance # # else: # # raise ValidationError(detail="forbidden", code=status.HTTP_403_FORBIDDEN) # raise ValidationError(detail="incorrect input data", code=status.HTTP_400_BAD_REQUEST)