как получить значение базы данных из orm и имя поля получить из строки в odoo 8 - PullRequest
1 голос
/ 30 января 2020

Я получаю строку имени поля из конфигурации.

para = 'partner_id.name'
account.invoice(281088,).para 
*** AttributeError: 'account.invoice' object has no attribute 'para'

Система не может точно знать имя поля базы данных. Это происходит из конфигурации пользователя.

1 Ответ

0 голосов
/ 03 февраля 2020

В вашем случае вы можете разделить предоставленный параметр и использовать getattr следующим образом

para = 'partner_id.name'
attributes = para.split('.')
value = account.invoice(281088)
for attribute in attributes:
    if hasattr(value, attribute):
        value = getattr(value, attribute)
    else:
        return False
return value
attributes = para.split('.')

Это разделяет предоставленный пользователем параметр. В этом случае значение атрибутов станет ['partner_id', 'name']

value = account.invoice(281088)

. Присвойте account.invoice значение

for attribute in attributes:
    if hasattr(value, attribute):
        value = getattr(value, attribute)
    else:
        return False

L oop через наши атрибуты и проверьте, имеет ли значение этот атрибут. Если это так, получите его значение или верните иначе.

return value

Верните окончательное значение, которое будет именем партнера в этом случае

...