是否有任何方法可以将其他参数传递给我保存在数据库中的实例,以便在实例保存后稍后访问它们?
我的案例的简要示例:
我正在使用Django的信号作为事件的触发器,例如发送确认电子邮件,并由其他进程(例如worker)执行。
我愿意指定哪个实例和何时应该触发事件,而哪个则不应该:有时我想创建/更新记录来触发一系列事件,有时我希望它们是静默处理或执行其他操作
对此的一种解决方案是将特定实例的所需行为保存在模型字段中,例如JSONField
,并在post_save
处恢复该行为,但这似乎很难解决这种问题。
我正在使用post_save
信号作为实例是否已正确保存在数据库中的验证,因为我不想触发事件,过了一会儿,在将实例保存到数据库中时出了点问题。
实例通过Django Forms
,后端例程和RestFramework
Seralizers
答案 0 :(得分:2)
一种解决方案是使用任意模型实例属性(而非字段)存储所需状态。例如:
def my_view(request):
...
instance._send_message = True if ... else False
instance.save()
@receiver(post_save, sender=MyModel)
def my_handler(sender, instance, **kwargs):
if instance._send_message:
...