This is my model.py
class AppointmentMaster(models.Model):
id = models.AutoField(primary_key=True)
user_key = models.CharField(max_length=30,blank=True,unique=True)
phone_number = models.CharField(max_length=20, blank=True, null=True)
email = models.CharField(max_length=20, blank=True, null=True)
@receiver(post_save, sender=AppointmentMaster)
def generate_AppointmentMaster_unique_key(sender, instance, created, **kwargs):
post_save.disconnect(generate_AppointmentMaster_unique_key, sender=MenstrualHistory)
instance.menstrual_history_n_key = "USER-{}".format(instance.id)
instance.save()
post_save.connect(generate_AppointmentMaster_unique_key, sender=AppointmentMaster)
and i'm using viewsets.ModelViewSet for post details.I want to save user_key automatically when create a new row from post api.
I want output like
{
"id":1,
"user_key":"USER-1",
"phone_number":"90000000",
"email":"abc@gmail.com"
}
You can override the .save()
method in Model
that will automatically perform this action when ever you update
or create
an object.
class AppointmentMaster(models.Model):
id = models.AutoField(primary_key=True)
user_key = models.CharField(max_length=30,blank=True,unique=True)
phone_number = models.CharField(max_length=20, blank=True, null=True)
email = models.CharField(max_length=20, blank=True, null=True)
def save(self, *args, **kwargs):
self.user_key = f"USER-{self.id}"
super(AppointmentMaster, self).save(*args, **kwargs)