Django模型保存两次..为什么?

时间:2013-07-04 17:33:03

标签: django django-models

我在函数

中有一个ajax调用
console.log("Executing call on " + link);

$.ajax({
  type : "POST",
  url : link,
  data : {"clientId" : selectedClient, "id" : id},
  dataType : "json",
  success : function(retData) {
    console.log(JSON.parse(retData));
  } 
})

调用views.py:

def putClientPeerData(request):
  client = Client.objects.get(client = request.REQUEST["clientId"])
  peer = Client.objects.get(client = request.REQUEST["id"])
  ClientPeers.objects.create(client = client, parentorg = peer.parentorg, eff_date = datetime.now(), exp_date = None).save()
  testPeer = ClientPeers.objects.get(client = client, parentorg = peer.parentorg)

  if testPeer.client == client:
    return HttpResponse(simplejson.dumps({"returnValue" : "success"}))
  else:
    return HttpResponse(simplejson.dumps({"returnValue" : "failure"}))

但是,save方法会执行两次,这会导致MultipleObjectsReturned查询出现testPeer异常。

1 个答案:

答案 0 :(得分:3)

create调用save,无需明确调用它。


Documentation

create(**kwargs)

创建对象并将其全部保存在一个步骤中的便捷方法。因此:

p = Person.objects.create(first_name="Bruce", last_name="Springsteen")

p = Person(first_name="Bruce", last_name="Springsteen")
p.save(force_insert=True)

是等价的。