объединить дату и время в odoo 9.0

У меня есть два поля, как показано ниже.

>  appo_date = fields.Date(string="Appointment Date")
>  appo_time = fields.Float(string="Appointment Time")

Мне нужно объединить эти два поля. Для этого я написал функцию, как показано ниже.

def _combine(self, cr, uid, ids, field_name, args, context=None):
        values = {}
        for id in ids:
            rec = self.browse(cr, uid, [id], context=context)[0]
            values[id] = {}
            values[id] = '%f - %f' % (rec.appo_date, rec.appo_time)
        return values

И вызвал эту функцию в отдельном поле, как показано ниже.

appo_date_and_time = fields.Char(compute='_combine', string='Appointment Date/Time', arg=('appo_date','appo_time'), method=True)

Эти поля вызываются в xml файлах

<field name="appo_date"/>
<field name="appo_time"/>
<field name="appo_date_and_time"/>

Я получаю сообщение об ошибке

TypeError: _combine() takes at least 6 arguments (5 given)

person iam supreeth    schedule 18.05.2016    source источник


Ответы (1)


Вы работаете с Odoo 9. Поэтому рекомендуется попрактиковаться с новым API.

Попробуйте с этим кодом:

@api.multi
def _combine(self):
    if self.appo_date and self.appo_time:
        self.appo_date_and_time = '%f - %f' % (self.appo_date, self.appo_time)
    elif self.appo_date:
        self.appo_date_and_time = str(self.appo_date)
    elif self.appo_time:
        self.appo_date_and_time = str(self.appo_time)
    else
        self.appo_date_and_time = 'No Date and Time set'
person Bhavesh Odedra    schedule 18.05.2016
comment
спасибо .. но у меня есть date_field (appo_date = fields.Date(string=Appointment Date)) какой тип данных я должен указать, чтобы получить дату - person iam supreeth; 18.05.2016
comment
Тип данных даты работает нормально. Он предложит пользователю ввести дату. - person Bhavesh Odedra; 18.05.2016
comment
эй, я получаю в этом формате 2016-05-19 9.000000 Как настроить дату и время? - person iam supreeth; 18.05.2016