serializers.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from rest_framework import serializers, status
  2. from rest_framework.exceptions import ValidationError
  3. from apps.patient.models import Patient
  4. class PatientSerializer(serializers.ModelSerializer):
  5. class Meta:
  6. model = Patient
  7. fields = '__all__'
  8. extra_kwargs = {
  9. 'owners': {'required': False}
  10. }
  11. def create(self, validated_data):
  12. user = self.context['request'].user
  13. name = validated_data['name']
  14. exists = Patient.objects.filter(owners=user).filter(name=name)
  15. if len(exists) > 0:
  16. raise ValidationError(detail="Patient with name "+name+" already exists", code=status.HTTP_400_BAD_REQUEST)
  17. patient = Patient.objects.create(
  18. name=validated_data['name']
  19. )
  20. patient.gender = validated_data['gender']
  21. patient.born = validated_data['born']
  22. patient.owners.set([user])
  23. patient.save()
  24. return patient
  25. # def update(self, instance, validated_data):
  26. # if isinstance(instance, Patient):
  27. # if 'name' in validated_data:
  28. # instance.name = validated_data['name']
  29. # if 'owners' in validated_data:
  30. # result = instance.owners.all()
  31. # list_result = [entry for entry in result]
  32. # list_result.append(validated_data['owners'])
  33. # instance.owners.set(list_result)
  34. # # list_owner = instance.owners.all()
  35. # # list_owner.union(validated_data['owners'])
  36. # # listOwners.add(validated_data['owners'])
  37. # # instance.owners.set(instance.owners.all() | validated_data['owners']) #.add(validated_data['owners'])
  38. # instance.save()
  39. # return instance
  40. # # patient = (Patient)instance
  41. # # user = self.context['request'].user
  42. # # if user in instance.owners.all():
  43. # # instance.name = validated_data['name']
  44. # # instance.save()
  45. # # return instance
  46. # # else:
  47. # # raise ValidationError(detail="forbidden", code=status.HTTP_403_FORBIDDEN)
  48. # raise ValidationError(detail="incorrect input data", code=status.HTTP_400_BAD_REQUEST)