Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
34625 Lượt xem

I am getting this error:

2014-12-12 14:44:33,032 4256 ERROR INTRAC openerp.sql_db: Programming error: can't adapt type 'intrac.students', in query INSERT INTO "intrac_attend" ("id", "attend_date", "student_name", "attend_present", "batch_number", "attend_sheet", "create_uid", "write_uid", "create_date", "write_date") VALUES(nextval('intrac_attend_id_seq'), %s, %s, %s, %s, %s, %s, %s, (now() at time zone 'UTC'), (now() at time zone 'UTC')) RETURNING id
2014-12-12 14:44:33,049 4256 ERROR INTRAC openerp.http: Exception during JSON request handling.

Can someone help me figure out the problem?

 

This is my code:

==================================================================

class intrac_att_sheet(osv.osv):

    def onchange_batch_number(self, cr, uid, ids, batch_number, attend_date, name, context=None):
        if batch_number:
            getmodelfields = self.pool.get('intrac.batches.registrations')
            for records in getmodelfields.browse(cr, uid, batch_number, context=context):
                browse_student_name = records.student_name
                attend_obj = self.pool.get('intrac.attend')
                attend_obj.create(cr, uid,{'batch_number' : batch_number, 'student_name': browse_student_name , 'attend_date':attend_date, 'attend_present': True, 'attend_sheet': name}, context=context)
        return {'value':{}}

    _name = 'intrac.att.sheet'
    _columns = {
        'name':fields.char('Attendance_Sheet_Number'),
        'batch_number': fields.many2one('intrac.batches', 'Batch_number'),
        'attend_date': fields.date('Date'),
        'attend_records':fields.one2many('intrac.attend', 'attend_sheet', 'Attendance Sheet'),
    }
intrac_att_sheet()

================================================

class intrac_attend(osv.osv):


    _name = 'intrac.attend'
    _columns = {
        'name':fields.char('Attendance Record Number'),
        'batch_number': fields.many2one('intrac.batches', 'Batch Number'),
        'student_name': fields.many2one('intrac.students', 'Student Name'),
        'attend_date': fields.date('Date'),
        'attend_present': fields.boolean('Present'),
        'attend_remarks': fields.char('Remarks'),
        'attend_sheet':fields.many2one('intrac.att.sheet', 'Attendance Sheet'),

    }
intrac_attend()

======================================================================

class intrac_batches_registrations(osv.osv):

    
    _name = 'intrac.batches.registrations'
    _columns = {
        'name': fields.char('Registration Number'),
        'student_name': fields.many2one('intrac.students', 'Student Name4'),
        'batch_number': fields.many2one('intrac.batches', 'Batch Number'),
        'batch_start_date' : fields.date('Start Date'),
        'invoice_number': fields.char('Invoice Number', size=100),
        'result': fields.char('Result2'),
        'batch_registration_notes': fields.text('Notes'),
        'placement_session_number': fields.many2one('intrac.placement.sessions', 'Placement Session Number'),
        'count_len': fields.integer('Counter'),
    }

=================================================================

class intrac_students(osv.osv):
 

    _name = 'intrac.students'
    _columns = {
        'name': fields.many2one('res.partner', 'Student Name'),
        'student_number': fields.char('Student Number', readonly=True),
        'student_image': fields.binary("Student Picture"),
        'student_id_type': fields.selection([('Government ID','Government ID'),('Passport','Passport')],'Identification Type'),
        'student_id_number': fields.char('ID Number', size=100),
        'student_gender': fields.selection([('Male','Male'),('Female','Female')], 'Gender'),
        'student_education_level': fields.selection([('High School','High School'),('College','College')], 'Education Level'),
        'student_notes': fields.one2many('intrac.students.notes', 'student_name', 'Student Notes'),
        'student_dob': fields.date('Date of Birth'),
    }

===========================================================

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Problem that you are passing browse object instead of simple id or char value in create method.
So instead you should try this:

browse_student_name = records.student_name.id

In your code I have seen that you are creating a record from onchange instead passing/return values in dictionary.
You should not create/write the data in onchange, it cause some issues. Instead you should pass your dicitonary from onchange like this:

return {'value': ur_val_dict}

Please refer onchange in Odoo.

Ảnh đại diện
Huỷ bỏ
Tác giả

It worked. thank you. I also appreciate the tip about not using on_change for creating data. I will move the code into a create method.

Câu trả lời hay nhất

Yeah bro, Worked.. Thanks

Ảnh đại diện
Huỷ bỏ