gpt4 book ai didi

python - 我如何在 django 中发出可以区分 put 和 post 方法的信号?

转载 作者:行者123 更新时间:2023-12-01 03:26:00 24 4
gpt4 key购买 nike

我正在使用 in_built Django 用户,并希望为每个添加的用户生成通知,但我不希望在 put 请求上生成通知。它应该只在 post 上生成> 请求。我的模型是...

模型.py

class User(AbstractUser):
gender= models.CharField(choices=GENDER, max_length=10, null=True, blank=True)
role= models.CharField(choices=ROLE_CHOICE, max_length=15, null=True, blank=True)
designation=models.CharField(max_length=225,null=True,blank=True)
employee_id = models.CharField(max_length=20, default=None, null=True)

class Notification(models.Model):
text = models.CharField(max_length=225)
recipient=models.ForeignKey(User,related_name='notification')
timestamp = models.DateTimeField(null=True,blank=True,auto_now_add=True)
unread = models.BooleanField(default=True, blank=False)
send_by= models.ForeignKey(User, null=True,blank=True, related_name='Notification')

在我的信号中,我发出了这样的信号......

Signals.py

@receiver(post_save, sender= Any_model)
def comment_recieved(sender,**kwargs):
obj= kwargs.get('instance')
recipient=User.objects.get(is_superuser=True)
Notification.objects.create(
recipient= recipient,
comment= obj,
project=obj.project,
type="commented",
send_by=obj.supporter,
text= "%s has commented on %s" % (obj.supporter, obj.project)
)
return None

现在的问题是,每次您执行 put 或 post 请求时,它都会保存用户实例,因此它会创建一个通知对象。我只想在创建新用户时创建通知。

最佳答案

post_save 信号发送一个名为 created 的参数,它是

A boolean; True if a new record was created.

您可以使用它来区分新记录是创建还是刚刚更新。

More info in the docs

关于python - 我如何在 django 中发出可以区分 put 和 post 方法的信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41396495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com