В вашем случае вы можете разделить предоставленный параметр и использовать 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
Верните окончательное значение, которое будет именем партнера в этом случае