This question has been flagged
1 Reply
3280 Views

Hi there i'm tring to override create fucntion to add records in two table same time but i'm getting errorr


when i try to choose standerd for student the student should be added to many2many field in standerd model but i get an errpr when i try to do so .

here is my fields in student model :


'standard_id': fields.many2one('fci.standard', string='Standard', required=True), 

and here is my fields in standrard table model:


'code': fields.char(size=8, string='Code', required=True),
'name': fields.char(size=32, string='Name', required=True),
'sequence': fields.integer('Sequence'),
'student_ids': fields.many2many('fci.student', 'student_standard_rel', 'fci_student_standard_id', 'standard_id',
string='Student(s)'),


and here is my create function

def create(self, cr, uid, vals, context=None):
context = context or {}
created_id = super(NAME_OF_YOUR_CLASS, self).create(cr, uid, vals, context=context)
if vals.get('standard_id'):
self.pool.get('fci.standard').write(cr, uid, vals['standard_id'],
{'student_ids': [(4, created_id)]}, context=context)
return created_id



i hope i can find help

Avatar
Discard
Best Answer

Hi,

I updated your code in your post, just replace NAME_OF_YOUR_CLASS with good value (you do not give the class name of student, please always give at least in your code class name to be more clear for reader)

bye

Avatar
Discard
Author

i tried to override write function too but gives me error i don't know why here is my code def write(self, cr, uid, ids, values, context = None): res = super(fci_student, self).write(cr, uid, ids, values, context = context) if values.get('standard_id'): self.pool.get('fci.standard').write(cr, uid, values['standard_id'], {'student_ids': (0, 0, {values})}, context=context) return res and error says :TypeError: unhashable type: 'dict'