我有 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'
task_number_one
的完整定义是什么?什么是完整的错误堆栈?
看起来传递给task_number_one
的第一个参数应该是 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)