保存for循环的每次迭代

时间:2012-12-11 16:25:13

标签: python django

我正在发出一个返回序列化数据的请求。我迭代数据并检查它是否存在于数据库中。如果存在则忽略它,如果它不存在则保存。我遇到的问题是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语句的底部,但只有第一个通过检查的记录才会保存,而其余的数据项目都不会保存。我哪里错了?

1 个答案:

答案 0 :(得分:2)

首先,您可能会覆盖相同的 b对象,而不是创建新对象;我的意思是您检查某些id_str的对象不存在,但您只是覆盖了b的{​​{1}}和x属性。也许您需要做的是:

y

希望这会有所帮助:)

干杯!