У меня есть модель:
models.py
class Doctor(models.Model):
doctor_name = models.CharField(max_length=264, unique=True) # on_delete argument needs to be researched more deeply.
address = models.ForeignKey(Address, on_delete=models.CASCADE, null=True, blank=True)
contact_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.")
contact = models.CharField(validators=[contact_regex], max_length=15, null=True, blank=True) # validators should be a list
qualifications = models.CharField(max_length=264, null=True, blank=True)
license = models.CharField(max_length=264, null=True, blank=True)
note = models.TextField(null=True, blank=True)
def __str__(self):
return self.doctor_name
В этой модели поле внешнего адреса "адрес" является необязательным. Я хочу создать API отдыха. Но если я не предоставлю адресные поля, это выдаст ошибку. Это работает нормально, если я предоставлю адресные поля.
serializers.py
class AddressSerializer(serializers.ModelSerializer):
class Meta:
model = Address
fields = '__all__'
class DoctorSerializer(serializers.ModelSerializer):
address = AddressSerializer()
class Meta:
model = Doctor
fields = ['doctor_name', 'contact', 'qualifications', 'license', 'note', 'address']
def create(self, validated_data):
address_data = validated_data.pop('address')
addr = Address.objects.create(**address_data)
print(addr)
doctor = Doctor.objects.create(**validated_data, address=addr)
return doctor