1

我有一个批量更新。创建的每条消息我都需要调用 .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\' object has no attribute \'pk\'",)'

为什么?

4

1 回答 1

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循环是合适的。

于 2013-08-22T22:49:57.787 回答