У меня есть две модели, подобные этой:
class Address(models.Model):
line1 = models.CharField(max_length=264)
line2 = models.CharField(max_length=264)
line3 = models.CharField(max_length=264)
city = models.CharField(max_length=264)
state_province = models.CharField(max_length=264)
zip_pincode = models.CharField(max_length=264)
country = models.CharField(max_length=264)
other_details = models.TextField()
def __str__(self):
return self.id
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)
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, blank=True) # validators should be a list
qualifications = models.CharField(max_length=264)
license = models.CharField(max_length=264)
note = models.TextField()
def __str__(self):
return self.doctor_name
Я хочу создать API, в котором данные доктора включают адрес. поэтому адрес должен быть создан, и его идентификатор должен быть в модели доктора в качестве внешнего ключа в одном вызове API.
class DoctorSerializer(serializers.ModelSerializer):
address = AddressSerializer()
class Meta:
model = Doctor
fields = '__all__'
def create(self, validated_data):
address = validated_data.pop('address')
doctor = Doctor.objects.create(**validated_data)
Doctor.objects.create(doctor=doctor, **address)
return doctor
Это дает сообщение об ошибке целостности, так как address_id принимает значение NULL.
Может кто-то помочь мне с этим?