2016-08-01 30 views
1

我使用: RQ scheduler的Django发送邮件,只有当一个perticular场改变

有一个工作模型,在我的项目:

class Job(models.Model): 
    # Other fields 
    status = models.CharField(
     max_length=2, choices=choices.JOB_STATE_CHOICES, default=choices.PENDING_APPROVAL) 

我已经排定的每日任务在夜间它会检查对于今天批准的所有工作,并将邮件发送给我的用户。

所以查询:

jobs = Job.objects.filter(status='APPROVED', 
          updated_at__date=datetime.today().date()) 

问题与此查询是我怎么知道这个工作的薪水领域的地位是今天唯一的改变。

即使作业的标题今天被更改,并且状态在5天前被更改,该查询也将作业。

我只需要提取那些“状态”字段今天被更改的作业。谢谢你的帮助。

+0

模型中updated_at字段的类型是什么? –

+0

它是DateTimeField – Kishan

回答

1

您应该使用django-dirtyfields并立即发送电子邮件或将此job_id添加到RQ。 全部文档here

或更新updated_at场只有当status变化(再次Django的dirtyfields)通过写自己的副本()方法一样。

def save(self): 
    if self.status = 'aproved' and 'status' in self.get_dirty_fields(): 
     # add to RQ 
     # or set updated_at = datetime.now() # if you dont use on_update=datetime.now 
    super(...).save() 
相关问题