تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
1 الرد
2458 أدوات العرض

Hi, does anyone know if it's possible to extend a python field definition so that we can change the string attribute?

I don't want to redefine the entire field just as it appears in base odoo. I just want to change one attribute of the field. Something like:

book_value=fields.Monetary(string='Net Book Value')
الصورة الرمزية
إهمال
أفضل إجابة

Hi Bill, if you need to extend the field to change only one attribute you can actually define the field again and only change that attribute, the ORM will keep every other attribute and change the one you re-defined. 


from odoo import models, fields

class AccountAsset(models.Model):

_name = 'account.asset'
_description = 'Asset/Revenue Recognition'
_inherit = ['mail.thread', 'mail.activity.mixin']

book_value = fields.Monetary(string='Book Value', readonly=True, compute='_compute_book_value', store=True)


-- Inheritance 1: Module 1 that depends on account_asset --

class AccountAsset(models.Model):
_inherit = 'account.asset'

book_value = fields.Monetary(string='Custom string 1')

-- Inheritance 2: Module 2 that depends on module 1 (or installed after) --

class AccountAsset(models.Model):
_inherit = 'account.asset'

book_value = fields.Monetary(string='Custom string 2')

Outcome string: "Custom string 2"

It takes the last attribute defined in the AccountAsset class. ORM will automatically keep following attributes attached to the field:

  • readonly=True, 
  • compute='_compute_book_value', 
  • store=True 

Note: other attributes might still change if they are re-defined by other modules, or they also might be shown differently in specific views, if there is some specific 'string' attribute at view-level (XML view definition).

الصورة الرمزية
إهمال
الكاتب

I just tried this and it seems to work that I can just include the attributes that I'm changing. Thanks!

المنشورات ذات الصلة الردود أدوات العرض النشاط
1
يونيو 25
674
3
مايو 25
2426
1
مايو 25
663
1
مايو 25
834
4
مايو 25
2129