[ninux-dev] django question
leonardo
mail at leonardo.ma
Wed Dec 23 12:05:15 CET 2015
On Wed, 2015-12-23 at 10:56 +0100, Alessandro Bucciarelli wrote:
Ciao Alessandro, e grazie.
> 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.
non capisco bene cosa ho fatto di diverso rispetto agli esempi che ci
sono su django:
https://docs.djangoproject.com/en/1.8/topics/db/examples/many_to_one/
> Prova così dovrebbe essere corretto:
> def refresh_db(json_url):
> . resp = urllib2.urlopen(json_url)
> f = resp.read()
> json_topo = json.loads(f)
> . . . for node in json_topo['nodes']:
> . . . . . . scan = Scan()
> . . . . . . node = Node(node_id=node['id'],
> . . . . . . node_name=node['label'],
> last_scan=scan).save(commit=False)
> . . . . . scan.save()
> . . . . . node.save()
> 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.
TypeError: save() got an unexpected keyword argument 'commit'
da quanto capisco commit e' un'opzione di save() dei model Forms, ma
non dei models.
qui c'e':
https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/
qui no:
https://docs.djangoproject.com/en/1.8/ref/models/instances/
(sono su django 1.8.7)
in ogni caso, nel tuo codice creo e salvo un'oggetto scan per nodo,
right? mentre io voglio mantere una relazione one-to-many.
> 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.
> Scusa l'indent ma da cellulare è un incubo mettere gli spazi.
ma figurati! grazie per il tempo.
l.
More information about the ninux-dev
mailing list