模型 delete() 和 deserialized_object.save() 调用如果连续调用则不起作用



我试图将JSON导入我的Django WebApp,除了一个问题外,它几乎可以正常工作。当我在调用deserialized_object.save((之前删除对象1-2行时,它可以正常工作,但是如果我调用delete((,然后连续保存((连续保存((无法正常工作。

这很好

def builder_import(request, pk):
    if request.method == 'POST':
        file = request.FILES['myfile']
        data = file.read()
        ModelOne.objects.filter(linked__name__pk=pk).delete()
        for deserialized_object in serializers.deserialize("json", data):
            if object_should_be_saved(deserialized_object):
                deserialized_object.save()

这不起作用

def builder_import(request, pk):
  if request.method == 'POST':
    file = request.FILES['myfile']
    data = file.read()
    for deserialized_object in serializers.deserialize("json", data):
      if object_should_be_saved(deserialized_object):
        ModelOne.objects.filter(linked__name__pk=pk).delete()
        deserialized_object.save()

第一个片段工作正常,但第二片片段却没有。在首先,它删除所有条目,然后将所有条目正确上传到DB中。但是在第二种情况下,它出于某种奇怪的原因删除然后仅上传一个条目。

可能是一些同步问题,但我认为Django DB操作且同步良好。

可能是什么问题?(我遵循了序列化指南https://docs.djangoproject.com/en/1.11/topics/serialization((编辑(

如上所述:

每次迭代添加单个记录,接下来的迭代将删除它,然后添加另一个迭代。最终,您创建了一个记录。PK在每次迭代中保持不变,因此在任何情况下都会一次又一次地删除看起来不错。

最新更新