我正在尝试制作一个更新 django 模型并发送电子邮件的芹菜任务。电子邮件已正确发送,但模型未保存到数据库中。任何想法为什么会发生这种情况?这是我的示例任务:
@app.task()
def send_invitation(company_id):
users = User.objects.filter(company_id=company_id, user_email__invitation_sent=False)
for user in users:
user.user_email.invitation_sent = True
user.save()
send_email(user)
例如,我已经尝试了几种保存选项user.user_email.save()
但是当任务完成时,会发送邮件,但invitation_sent
保持False
,我不知道为什么会发生这种情况
问题是您在用户模型上调用save()
,而您正在更改似乎是UserEmail(或类似的东西(模型的内容。
要正确解决此问题,请跟踪要保存的模型,因此在您的示例中:
...
user.user_mail.invitation_sent = True
# call save on user_email instance
user.user_mail.save() # <---- here
虽然从您的示例中公平起见,您绝对应该跟踪电子邮件的操作顺序。因此,发送电子邮件,如果成功,则将其标记为这样,不要在做之前说您做了某事。