I want to run my function to do something in a request to url of serializer
my serializer :
class usersSerializer(ModelSerializer):
class Meta:
model=users
fields="__all__"
my view for serializer:
class usersCreate(generics.CreateAPIView):
queryset=users.objects.all()
serializer_class=usersSerializer
my function:
def f():
now=datetime.now()
now10=now + timedelta(minutes = 10)
quer=users.objects.last()
rcode=randint(1000,9999)
a=SMS(users_id=quer,code=rcode,expireTime=now10)
a.save()
SMS is another table users_id ====> foreigne key to id in users table
I want to when I send request to user create url changed two table : users SMS
models:
class users(models.Model):
number=models.CharField(verbose_name="userNumber",max_length=11)
name=models.CharField(verbose_name="name",max_length=40)
createTime=models.DateTimeField( auto_now_add=True,auto_now=False)
status=models.BooleanField(default=False)
class SMS(models.Model):
users_id=models.ForeignKey(users,on_delete=models.CASCADE,default=0)
code=models.PositiveSmallIntegerField(verbose_name="randomCode")
expireTime=models.DateTimeField()
status=models.BooleanField(default=False)
On models.py you can use signals. Which is safer then assuming the LAST will return the current user for an SMS message.
from django.db.models.signals import post_save,pre_save
@receiver(post_save, sender=users)
def post_save_users(sender, instance, created, **kwargs):
if created:
now=datetime.now()
now10=now + timedelta(minutes = 10)
quer=users.objects.last()
rcode=randint(1000,9999)
sms = SMS(user_id=instance,code=rcode,expireTime=now10)
sms.save()
instance.save()