[英]Save each iteration of for loop
我正在發出一個返回序列化數據的請求。 我迭代數據並檢查它是否存在於數據庫中。 如果存在則忽略它,如果它不存在則保存。 我遇到的問題是for循環只保存第一條記錄,即使它遍歷數據的所有鍵並將其與數據庫中的鍵進行比較。 我的代碼如下:
b = MyModel()
data #The serialized data
existingData = Off.object.filter(...)
for key in data:
if existingData.filter(id_str=key['id_str']).exists():
pass #If I place a print key['id_str'] here, all skipped items are printed.
else:
b.x = key['x']
b.y = key['y']
b.save()
每次函數運行時,在b.save()
之后,計數器都會放在else語句的底部,計數器會增加,但只有通過檢查的第一個記錄才會保存,而數據中的其余項目都不會保存。 我哪里錯了?
首先,您可能會覆蓋相同的 b
對象,而不是創建一個新對象; 我的意思是你檢查一些id_str
對象不存在,但你只是覆蓋了b
的x
和y
屬性。 也許你需要做的是:
for item in data:
if not existingData.filter(id_str=item.get('id_str')).exists():
MyModel.objects.create(id_str=item.get('id_str'),
x=item.get('x'),
y=item.get('y'))
希望這可以幫助 :)
干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.