Odoo Help


This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


ProgrammingError: can't adapt type 'dict' [SOLVED]

on 7/15/14, 3:34 AM 5,765 views

In OpenERP while saving data I got this error : ProgrammingError: can't adapt type 'dict' 

I am having two tables : 

class hr_employee(osv.osv):
    _inherit = 'hr.employee'
    _name = 'hr.employee'
    _columns = {
                'emp_code':fields.char('Employee Code', size=6, readonly=True),
                'religion_id':fields.many2one('hr.religion', 'Religion'),
                'pan_id':fields.char('PAN Number', size=10),
                'marriage_date':fields.date('Marriage Date'),
                'lang_speak_ids':fields.many2many('hr.language','rel_empspeak_lang', 'employee_id','language_id', 'Languages Speak'),
                'lang_write_ids':fields.many2many('hr.language','rel_empwrite_lang', 'employee_id','language_id', 'Languages Write'),
                'education_ids':fields.one2many('hr.education.detail','employee_id', 'Courses'),
                'family_detail_ids':fields.one2many('hr.family.detail','employee_id', 'Family Details'),
                'employement_detail_ids':fields.one2many('hr.employment.detail','employee_id', 'Work Experience Information'),
                'reference_detail_ids':fields.one2many('hr.reference.detail','employee_id', 'Reference Details'),
                'training_detail_ids':fields.one2many('hr.training.detail','employee_id', 'Training Details'),
                'medical_detail_ids':fields.many2one('hr.medical.detail', 'Medical Details')                                



class hr_medical_detail(osv.osv):
    _name = 'hr.medical.detail'
    _rec_name = 'blood_group'    
    _columns = {
                'blood_group':fields.char('Please mention your blood group:', size=100, required=True),
                'medicine':fields.boolean('Are you taking any medicine?'),               
                'physician_address':fields.text('Please mention your physician name & address:')   

While saving medical details getting this error.

Please, can anyone tell what could be the reason?

I am not sure, just a thought, can it be due to the ":" in the string for "blood_group" column.

Hiren Vora - CEO at Emipro Technologies Pvt. Ltd. India
on 7/15/14, 4:11 AM

please add your xml file here ,then i can check...

on 7/15/14, 4:20 AM

Thanks for your quick response guys!!! Problem was with my __openerp__.py

on 7/15/14, 7:33 AM

Hello Shiv.. I got same problem. How did u fix this?

Andre Leander
on 9/24/14, 4:50 AM

check your __openerp__.py file syntax

on 9/24/14, 6:08 AM
O Sluys
On 1/13/16, 4:47 AM

I was getting the same error but in my situation the problem happened to be that I had mistakenly used a many2one field in place of a one2many field. Looking at your code, I also see that you may have done the same thing:

'medical_detail_ids': fields.many2one('hr.medical.detail', 'Medical Details')

It appears that you meant to use a one2many field here, so it should look like this:

'medical_detail_ids': fields.one2many('hr.medical.detail', 'employee_id', 'Medical Details')

You would also need to add the following reciprocal field to hr_medical_detail:

'employee_id': fields.many2one('hr.employee', 'Employee')

The error only appeared for me when I specified a one2many widget for the field in the form view and tried to add a line item and save the form, so I suspect that you were also using a one2many widget in your form view to represent the medical_detail_ids field. Naturally, the one2many widget is not the appropriate widget to use for a many2one, and thus the cryptic error.

You say that you fixed your problem by correcting the __openerp__.py file but perhaps that was just coincidence. If you could post exactly what was wrong with your file and how you fixed it, we could determine if that was the case, and it would also help out anyone else who may have the same problem.

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

5 follower(s)


Asked: 7/15/14, 3:34 AM
Seen: 5765 times
Last updated: 8/23/16, 12:56 PM