我有批量更新。创建的每条消息我都需要调用.send(gateway)这就是我尝试过的:
objs = [
Message(
recipient_number=e.mobile,
content=content,
sender=e.contact_owner,
billee=user,
sender_name=sender
).send(gateway)
for e in query
]
# Send messages to DB
Message.objects.bulk_create(objs)
我收到此错误:
处理ID为3ab72d3c-5fd8-4b7d-8cc5-e0400455334f的任务请求引发异常: 'AttributeError(“\'NoneType \'对象没有属性''pk \'”,)'
为什么呢?
答案 0 :(得分:4)
您正在objs
的每个元素上调用send
来创建query
列表。据推测,send
不会返回任何内容,而是获得None
的列表。试试这个:
objs = []
for element in query:
message = Message(**kwargs)
message.send(gateway)
objs.append(message)
Message.objects.bulk_create(objs)
**kwargs
只是您传递给Message的所有参数的占位符。您可以使用字典或只传递原始代码中的所有参数。
作为附注,列表推导通常在您想要新列表而不是副作用(如发送消息)时指示。这里你想要两者,所以for
循环是合适的。