如何在更新/修改Django中的表后自动调用views.py中的方法?

时间:2012-07-11 19:43:25

标签: python email django-models django-views

我正在构建一个基于Web的应用程序,我需要在更新或修改表中的某些值后,通过E-mail向注册用户发送通知。

我有model.py

class ProileComment(models.Model):
    comment = models.TextField()
    user = models.CharField(max_length=30, null=False, blank=True)
    timestamp = models.DateTimeField(null=False, blank=True)

views.py

中的方法
def send_email(request):
   ##

根据我的问题,如果ProfileComment模型将更新,那么它应该自动调用send_email方法。这样用户就可以获得有关数据库更改的通知。我该怎么办?

1 个答案:

答案 0 :(得分:1)

你可以使用django signals !!

https://docs.djangoproject.com/en/dev/ref/signals/

它们允许您注册信号监听器。也许pre_save信号最能满足您的需求?每当应用程序中的任何地方保存某些内容时,您的信号就会被调用,您可以根据模型或您需要的其他条件做出决定。

或者,如果您只想为该模型发送send_email,则可以覆盖save方法!

class ProfileComment(models.Model):


    def save(self, *args, **kwargs):
      # send email?
      super(ProfileComent, self, *args, **kwargs) # make sure to call parent!