簡體   English   中英

保存for循環的每次迭代

[英]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對象不存在,但你只是覆蓋了bxy屬性。 也許你需要做的是:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM