2015-02-05 1 views
0

В модуле openucat при генерации расписания я хочу загрузить объекты, отфильтрованные факультетом. Это тот шнур, который я попробовал.openerp фильтрация данных по поменному полю

class generate_time_table_line(osv.osv_memory): 
    _name = 'gen.time.table.line' 
    _description = 'Generate Time Table Lines' 
    _rec_name = 'day' 

    _columns = { 
     'gen_time_table': fields.many2one('generate.time.table', 'Time Table', required=True), 
     'faculty_id': fields.many2one('op.faculty', 'Faculty', required=True), 
     'subject_id': fields.many2one('op.subject', 'Subject', required=True), 
     'day': fields.selection([('1', 'Monday'), 
          ('2', 'Tuesday'), 
          ('3', 'Wednesday'), 
          ('4', 'Thursday'), 
          ('5', 'Friday'), 
          ('6', 'Saturday'), 
          ('7', 'Sunday'), ] 
          , 'Day', required=True), 
     'period_id': fields.many2one('op.period', 'Period', required=True), 
    } 

функция ......

def onchange_faculty(self, cr, uid, ids, faculty_id, context=None): 
    values = {'faculty_subject_ids': False} 
    faculty = self.pool.get('op_faculty').browse(cr, uid, id(faculty_id), context=context) 
    values['faculty_subject_ids'] = faculty.faculty_subject_ids 
    return {'value': values} 

и это поле в XML

<field name="faculty_id" on_change='onchange_faculty(faculty_id, context)'/> 

, изменяя факультет я получил эту ошибку

2015-02-05 06:41:59,207 4104 ERROR myschool openerp.osv.osv: Uncaught exception 
Traceback (most recent call last): 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\server\openerp\osv\osv.py", line 132, in wrapper 
    return f(self, dbname, *args, **kwargs) 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\server\openerp\osv\osv.py", line 199, in execute 
    res = self.execute_cr(cr, uid, obj, method, *args, **kw) 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\server\openerp\osv\osv.py", line 187, in execute_cr 
    return getattr(object, method)(cr, uid, *args, **kw) 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\src\myschool\wizard\generate_time_table.py", line 156, in onchange_faculty 
faculty = self.pool.get('op_faculty').browse(cr, uid, id(faculty_id), context=context) 
AttributeError: 'NoneType' object has no attribute 'browse' 

2015-02-05 06:41:59,233 4104 ERROR myschool openerp.netsvc: 'NoneType' object has no attribute 'browse' 
Traceback (most recent call last): 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\server\openerp\netsvc.py", line 292, in dispatch_rpc 
    result = ExportService.getService(service_name).dispatch(method, params) 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\server\openerp\service\web_services.py", line 626, in dispatch 
    res = fn(db, uid, *params) 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\server\openerp\osv\osv.py", line 190, in execute_kw 
    return self.execute(db, uid, obj, method, *args, **kw or {}) 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\server\openerp\osv\osv.py", line 132, in wrapper 
    return f(self, dbname, *args, **kwargs) 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\server\openerp\osv\osv.py", line 199, in execute 
    res = self.execute_cr(cr, uid, obj, method, *args, **kw) 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\server\openerp\osv\osv.py", line 187, in execute_cr 
    return getattr(object, method)(cr, uid, *args, **kw) 
    File "E:\Development\MySchool_New\Source\trunk\openerp.myschool\src\myschool\wizard\generate_time_table.py", line 156, in onchange_faculty 
faculty = self.pool.get('op_faculty').browse(cr, uid, id(faculty_id), context=context) 
AttributeError: 'NoneType' object has no attribute 'browse' 
2015-02-05 06:41:59,293 4104 INFO myschool werkzeug: 127.0.0.1 - - [05/Feb/2015 06:41:59] "POST /web/dataset/call_kw HTTP/1.1" 200 - 

Как я могу решить эту проблему ...?

ответ

0

onchange - неправильный. попробуйте ввести этот код:

def onchange_faculty(self, cr, uid, ids, faculty_id, context=None): 
    values = {} 
    if faculty_id: 
     faculty = self.pool.get('op.faculty').browse(cr, uid, faculty_id, context=context) 
     if faculty.faculty_subject_ids: 
      values['faculty_subject_ids'] = faculty.faculty_subject_ids 
    return {'value': values} 
+0

На этот раз я получил эту ошибку. XmlHttpRequestError INTERNAL SERVER ERROR 500 Внутренняя ошибка сервера

Internal Server Error

Сервер обнаружил внутреннюю ошибку и не удалось выполнить ваш запрос. Либо сервер перегружен, либо есть ошибка в приложении.

Chamal

+0

это ошибка сервера и не связанная с этим кодом. Возможно, вам нужно перезапустить сервер postgres после того, как он будет работать –

+0

он говорит так: raise TypeError (repr (o) + "не является сериализуемым JSON") TypeError: browse_record (op.subject, 1) не является сериализуемым JSON – Chamal