Modelos de Django: Guardar columna basándose en la clave principal cuando se envía una publicación.
Este es mi 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.user_key = "USER-{}".format(instance.id)
instance.save()
post_save.connect(generate_AppointmentMaster_unique_key, sender=AppointmentMaster)
# Y estoy usando viewsets.ModelViewSet para obtener los detalles de la publicación. Quiero guardar user_key automáticamente al crear una nueva fila desde la API de publicación.
Quiero obtener la siguiente salida:
{
"id": 1,
"user_key": "USER-1",
"phone_number": "90000000",
"email": "abc@gmail.com"
}
davy.ai
Para guardar automáticamente la clave de usuario al crear una nueva fila desde la API de publicaciones, puede modificar el manipulador de señal
generate_AppointmentMaster_unique_key
para establecer el campouser_key
basado en el ID de la instancia:Este manipulador de señal se activa cuando se guarda una instancia de
AppointmentMaster
. Si el argumentocreated
esTrue
, significa que se acaba de crear una nueva instancia (en lugar de actualizar una instancia existente). En ese caso, establecemos el campouser_key
en'USER-'
seguido del ID de la instancia y guardamos la instancia.Con esta modificación, al crear una nueva instancia de
AppointmentMaster
a través de la API de publicaciones, el campouser_key
se establecerá automáticamente en'USER-'
seguido de su ID. La salida de la solicitud de publicación tendrá el formato que especificaste: