2013-07-04 70 views
2

我有一个函数Django模型保存两次..为什么?

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内调用Ajax调用:

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方法执行了两次,这会导致对testPeer查询MultipleObjectsReturned例外。

回答

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) 

是等价的。

相关问题