Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami
  • Pagina:
  • 1
  • 2

ARGOMENTO: inserimento valore in campo many2many

inserimento valore in campo many2many 6 Anni 3 Mesi fa #9009

  • ellesalvo
  • Avatar di ellesalvo
  • Offline
  • Fresh Boarder
  • Messaggi: 11
  • Karma: 0
Ciao a tutti,
sono alle prime armi nello sviluppo di moduli OpenErp.
Non so se l'implementazione usata è quella corretta.

Chiedo aiuto per la seguente questione :

definite 2 classi

class A(osv.osv):
_name = "objectA"
_columns = {
'B_ids': fields.many2many ('objectB', 'objectAB_rel','A_id','B_id', 'Bid'),
'AOtherfield': ...
}
A()

class B(osv.osv):
_name = "objectB"
_columns = {
'A_ids': fields.many2many('objectA', 'objectAB_rel','B_id','A_id', 'Aid'),
'BOtherfield': ...
}
B()

- classe A relativa ai corsi
- B_ids gli studenti che frequentano il corso A_id

- classe B relativa agli studenti
- A_ids i corsi frequentati dallo studente B_id

ho definito una terza classe iscrizioni con un workflow per l'iscizione di uno studente in un corso.
Un bottone nella view relativa alla terza classe richiama una funzione che deve effetuare l'inserimento dello
studente nel corso dunque :

def action_iscrizione(self, cr, uid, ids, context=None):

iscr=self.browse(cr, uid, ids, context=context)[0]

stud_id=iscr.B_id.id
corso_id=iscr.A_id.id

stude_obj = self.pool.get('objectB')
corsi_obj = self.pool.get('objectA')


return True

come faccio a scrivere nel campo many2many A_ids dell'objectB o B_ids dell'objectA

se uso

stude_obj.write(cr, uid, stud_id, {'BOtherfield': valore}) riesco ad inseire valori negli altri campi del record relativo a stud_id

provato qcs simile a

stude_obj.write(cr, uid,stude_id, (0,0,{'A_ids': corso_id})) ma non funziona

premetto che l'inserimento tramite le view form relative ai due oggetti funziona perfettamente.

Grazie per le vostre risposte.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:inserimento valore in campo many2many 6 Anni 3 Mesi fa #9013

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Hai già dato un occhio qui:
doc.openerp.com/v6.0/developer/2_5_Objec...Methods/methods.html

Se crei un nuovo record da linkare devi usare questa sintassi:

obj.write(cr, uid,id, {a_ids: (0, 0, { valori per creare un record di b})})
Ultima modifica: 6 Anni 3 Mesi fa da NicoTheBrush.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:inserimento valore in campo many2many 6 Anni 3 Mesi fa #9023

  • ellesalvo
  • Avatar di ellesalvo
  • Offline
  • Fresh Boarder
  • Messaggi: 11
  • Karma: 0
NicoTheBrush ha scritto:
Hai già dato un occhio qui:
doc.openerp.com/v6.0/developer/2_5_Objec...Methods/methods.html

Se crei un nuovo record da linkare devi usare questa sintassi:

obj.write(cr, uid,id, {a_ids: (0, 0, { valori per creare un record di b})})

Grazie per il suggerimento

obj.write(cr, uid,stud_id, {B_ids': [(6, 0, ids_record)]})

ids_record lista che contiene gli ids dei record di ObjectB

in questo modo nella tabella ObjectAB_rel vengono "sovrascritti" un numero di record pari al numero di ids in ids_records e trattandosi di una "sovrascrittura" è necessario che ids_record contenga gli ids già presenti nella tabella ObjectAB_rel altrimenti
si perdono i record già inseriti in precedenti scritture.
Cercherò di capire se è possibile effetuare scritture sulla tabella ObjectAB_rel senza dover verificare sostanzilamente i valori già registrati sul campo many2many.

Grazie ancora.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:inserimento valore in campo many2many 6 Anni 3 Mesi fa #9025

  • angedras
  • Avatar di angedras
  • Offline
  • Platinum Boarder
  • Messaggi: 330
  • Ringraziamenti ricevuti 4
  • Karma: 10
Ciao,
Prova con:
obj.write(cr, uid,stud_id, {B_ids': [(4, ids_record)]})

Dovrebbe appendere i valori di ids_record a quelli già presenti

R.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:inserimento valore in campo many2many 6 Anni 3 Mesi fa #9026

  • ellesalvo
  • Avatar di ellesalvo
  • Offline
  • Fresh Boarder
  • Messaggi: 11
  • Karma: 0
angedras ha scritto:
Ciao,
Prova con:
obj.write(cr, uid,stud_id, {B_ids': [(4, ids_record)]})

Dovrebbe appendere i valori di ids_record a quelli già presenti

R.

Provato hai perfettamente ragione, se ids di record già presenti in tabella ObjectAB_rel sono conenuti in ids_record
obj.write(cr, uid,stud_id, {B_ids': [(4, ids_record)]})
non sovrascrive i records già presenti nella tabella ObjectAB_rel ma appende quelli nuovi.

Purtroppo la documentazione non è il massimo e spesso bisogna sbatterci un pò la testa.

Thanks.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:inserimento valore in campo many2many 6 Anni 3 Mesi fa #9029

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Se hai letto attentamente i 6 casi di aggiornamento m2m nel link che ti ho mandato sull'ORM non sono proprio messi male come documentazione, un paio d'anni fa erano tutte cose che scoprivi a spizzichi e bocconi nei forum...
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
Tempo creazione pagina: 0.164 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam