【发布时间】:2018-11-12 23:40:57
【问题描述】:
大家好!
在我提出问题之前,我尝试了这些 SO 帖子:
它们都不起作用!
我想让用户在网站上更新新课程。使用Courses 的查询集,我想通过电子邮件发送它们。
send_daemon_email.delay(instance=instance,all_courses=Course.objects.all())
我的函数看起来像:
@shared_task
def send_daemon_email(instance,all_courses):
ctx = {'instance':instance,'all_courses':all_courses}
message = get_template("emails/ads.html").render(ctx)
''' '''
当我尝试将电子邮件发送给特定用户时 我得到的错误是
<User: First Name> is not JSON serializable
只是因为来自 celery 的delay() 得到了非序列化数据。
如何将 Django 对象发送到 celery 任务,以便在模板中使用它?我知道我可以将所需的信息作为 python 对象发送
send_daemon_email.delay(first_name='Name',
last_name='Lapr',all_courses = [{'title1':'title1',},{'title2':'title2',}])
但是信息太多了。
任何提示将不胜感激。 谢谢!
【问题讨论】:
-
你不能传递对象本身,因为它们是不可序列化的,但是你可以传递主键等。
-
用
pk,我可以在函数内检索对象吗?这是一个很好的观点
标签: python django celery django-serializer