Как получить атрибут из другого класса, используя метод просмотра в OpenERP

Я установил надстройку oemedical в свой OperaERP 7. Я добавляю в нее некоторые модификации. У меня проблема с функцией _get_ssn_from_name, которую я создал в модуле назначения, которая получает SSN из класса oemedical.patient для отображения в oemedical. просмотр встречи.

Вот код класса oemedical.appointment, содержащий функцию, которую я разработал

class OeMedicalAppointment(osv.Model):
    _name = 'oemedical.appointment'

    # The function causing the problem
    def _get_ssn_from_name(self, cr, uid, ids, field_name, arg, context=None):
        res = {}
        ssn = ''
        for record in self.pool.get('oemedical.patient').browse(cr, uid, ids, context=context):
            # When patient is not yet specified
            if not record.lastname:
                ssn = 'No Patient Specified!'

            # Return the ssn when the caller is the field name
            if field_name == 'alias':
                if record.ssn:
                    ssn = record.ssn
                else:
                    ssn = "Not Specified"
                print("ssn : %s" % ssn)

            res[record.id] = ssn
        return res

    _columns = {
        'patient_id': fields.many2one('oemedical.patient', string='Patient',
                                   required=True, select=True,
                                   help='Patient Name'),
        'name': fields.char(size=256, string='Appointment ID', readonly=True),
        'appointment_date': fields.datetime(string='Date and Time'),
        'appointment_day': fields.date(string='Date'),
        # some other attributes
        'alias': fields.function(_get_ssn_from_name, type='char', string='SSN', help="Social Security Number", multi=False),
        # other attributes
    }

OeMedicalAppointment()

А вот и код класса oemedical.patient

class OeMedicalPatient(osv.Model):
    _name='oemedical.patient'
    _inherits={
        'res.partner': 'partner_id',
    }

    _columns={
        'partner_id': fields.many2one(
            'res.partner', 'Related Partner', required=True,
            ondelete='cascade', help='Partner-related data of the patient'),
        'first_name': fields.char(size=256, string='Name', required=True),
        'lastname': fields.char(size=256, string='Lastname', required=True),
        # many other attributes..
        'ssn': fields.char(size=256, string='SSN'),
        # some other attributes..
        'deceased': fields.boolean(string='Deceased'),
    }

OeMedicalPatient()

Вот интерфейс создания новой встречи: Интерфейс добавления новой встречи

Когда я создаю нового пациента в форме создания записи (поле, где я могу выбрать пациента на скриншоте), я не получаю ошибку, и все идет хорошо, но когда я пытаюсь создать встречу для существующего пациента, я получить следующую ошибку:

AttributeError: 'Field lastname not found in browse_record(oemedical.patient, 8)'

Пожалуйста, помогите мне, и спасибо заранее!!


person Oussama    schedule 15.07.2014    source источник


Ответы (1)


Я получил ответ на официальный форум OpenERP Q/A и проблема решена.

person Oussama    schedule 16.07.2014