我有django 1.11.5和芹菜4。
我想将用户视图传递给任务(因为我无法在tasks.py中执行此操作,对吗?)
def form_valid(self, form):
form.instance.user = self.request.user
dict_obj = model_to_dict(self.request.user)
# serialized = json.dumps(dict_obj)
# print(serialized)
task_number_one.delay(dict_obj['username'])
return super().form_valid(form)
在芹菜中我收到了一个错误:
ValueError: invalid literal for int() with base 10: 'my_username'
答案 0 :(得分:0)
task_number_one
的完整定义是什么?什么是错误的完整堆栈?
看起来传递给task_number_one
的第一个参数应该是int,但用户名是一个字符串。
答案 1 :(得分:0)
您发布异常的堆栈跟踪和任务样本会很有帮助,但考虑到这一点,我认为这个错误正在发生。
你的celery任务期望第一个参数是int
,我发现这有点不太可能。
您的芹菜任务是通过他们的主键搜索用户(很可能是一个int)。
即
def task(user_id):
user = User.objects.get(pk=user_id)
如果将字符串传递给user_id
,则会抛出该值错误。
您应该更新视图以使用用户的pk
或id
属性。
def form_valid(self, form):
form.instance.user = self.request.user
task_number_one.delay(self.request.user.pk)
return super().form_valid(form)