代碼伺候:
先看如下代碼:
例1:
message = Message.objects.filter(pk=message_id2) message[0].id = message_id2 message[0].content = content2 message[0].message_type = message_type2 print(message[0].id) print(message[0].content) message[0].save()
可正常從QuerySet中讀取數據,並打印出來,無誤。可是無法將數據同步到數據庫中。
(1)all()返回的是QuerySet對象,程序並沒有真的在數據庫中執行SQL語句查詢數據,但支持迭代,使用for循環可以獲取數據。
例如有Book表,其包含bookname,booknum兩個屬性, 如何使用Objects.all(),得到bookname和booknum的值
(2)filter() 返回的是QuerySet對象,與all()相似,只是all()是查詢所有數據,常用:filter表示‘ = ’,exclude表示’ != ’。
(3)get()返回的是Model對象,類型為列表,說明使用get方法會直接執行sql語句獲取數據。
來看一個QuerySet對象:
message = Message.objects.filter(pk=message_id2)
message[0].content
這樣子確實可以讀取到QuerySet中的數據,可是對QuerySet修改后的數據無法保存到數據庫。
例1中不要嘗試通過message.save()的方式去同步數據到數據庫,因為QuerySet不存在save()方法。
正確寫法如下:
要想同步到數據庫中,需使用對象進行數據同步操作。
例2:
message = Message.objects.filter(pk=message_id2).first() message.id = message_id2 message.content = content2 message.message_type = message_type2 message.save()