我在DRF中有一個函數,我想告訴系統更新「所有人」,說我想給所有今天登錄的人一個免費獎,並且想要堅持這個列表(我得到這個例子是愚蠢的,它只是我試圖概括我的用例)。它將查詢以查看哪些用戶今天已經登錄,然後我想通過這些用戶循環來創建一個給他們獎勵的新活動。循環寫入到Django REST框架中的serializer.save()
這似乎只存儲在寫循環中的最後一個值。
time_threshold = datetime.now() - timedelta(hours=12)
signed_in_list = Activity.objects.filter(created__gte=time_threshold, activity="signed in")
for activity in signed_in_list:
serializer.save(user=activity.user_id, activity="gets free prize")
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED,
headers=headers)
我試圖讓它從「signed_in_list」返回的每個用戶ID將有一個新的活動寫入。
我期待爲循環中的每個user_id寫一個新的Activity條目,但它只執行循環中的最後一個user_id。這讓我認爲serializer.save正在工作,但是每次都在循環中重寫(而不是寫入數據庫)。
感謝您的評論,我覺得它混亂了,當我試圖讓它更通用的問題。我已經將其更正爲與您指出的代碼中的邏輯相匹配。它只是看起來像serializer.save只執行爲創建功能與這個循環 – probbins222
內執行,每次在你上面的例子結束,它仍然只執行一個DB寫在列表中的最後一項。 – probbins222