Django对象没有属性

时间:2013-08-22 22:31:44

标签: python django django-models

我有批量更新。创建的每条消息我都需要调用.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 \'”,)'

为什么呢?

1 个答案:

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