<p dir="ltr">Il secondo save non riesce a reperire l'istanza di Scan salvata fuori dal ciclo perché oramai quella è salvata nel db quindi Node che ha la Foreign a Scan non sa quale istanza di Scan andare a prendere, in particolare l'id. </p>
<p dir="ltr">Prova così dovrebbe essere corretto:</p>
<p dir="ltr">def refresh_db(json_url):<br>
   .  resp = urllib2.urlopen(json_url)<br>
      f = resp.read()<br>
      json_topo = json.loads(f)<br>
. . . for node in json_topo['nodes']:<br>
. . . . . . scan = Scan() <br>
. . . . . . node = Node(node_id=node['id'],<br>
. . . . . . node_name=node['label'],<br>
last_scan=scan).save(commit=False)<br>
. . . . .  scan.save() <br>
. . . . .  node.save()</p>
<p dir="ltr">Il commit è una opzione di save particolarmente utile quando devi ancora avere a disposizione oggetti che sono ForeignKey, diciamo che prepara l'oggetto ma non lo salva. <br>
Quindi crei un oggetto Scan, ma non lo salvi, prepari un Node con le Info necessarie ma lo salvi con commit False e poi salvi l'oggetto più interno e poi quello esterno.<br></p>
<p dir="ltr">Scusa l'indent ma da cellulare è un incubo mettere gli spazi.</p>
<p dir="ltr">Let us know. <br>
</p>