C'è un modo per aggiungere un attributo di campo personalizzato in Odoo? Ad esempio, ogni campo ha attributo help
in cui è possibile inserire un messaggio che spiega il campo per l'utente. Quindi voglio aggiungere un attributo personalizzato, in modo che cambi il modo in cui il campo agisce per tutti i tipi di campi.Odoo: aggiungi un attributo del campo personalizzato?
Voglio aggiungere nella classe Field
, in modo che tutti i campi ottengano quell'attributo. Ma sembra che non importa quello che faccio, Odoo non vede che tale attributo è stato aggiunto.
Se ho semplicemente aggiungo nuova personalizzato attribuiscono piace:
some_field = fields.Char(custom_att="hello")
, allora è semplicemente ignorato. E ne ho bisogno per essere prelevati con il metodo fields_get
, che può restituire valore di attributo desiderato (informazioni che cosa fa:
def fields_get(self, cr, user, allfields=None, context=None, write_access=True, attributes=None):
""" fields_get([fields][, attributes])
Return the definition of each field.
The returned value is a dictionary (indiced by field name) of
dictionaries. The _inherits'd fields are included. The string, help,
and selection (if present) attributes are translated.
:param allfields: list of fields to document, all if empty or not provided
:param attributes: list of description attributes to return for each field, all if empty or not provided
"""
Così definendolo, non restituire il mio attributo personalizzato (si fa ritorno a quelli originariamente definiti dalla vudù però).
ho anche provato ad aggiornare _slots
(con la patch scimmia o solo test modificando il codice attributo di origine) in Field
di classe, ma sembra non basta. Perché il mio attributo viene ancora ignorato.
from openerp import fields
original_slots = fields.Field._slots
_slots = original_slots
_slots['custom_att'] = None
fields.Field._slots = _slots
Qualcuno sa come aggiungere correttamente un nuovo attributo personalizzato per il campo?
Ho provato questo e funziona, anche se è necessario aggiungere, inoltre, che l'attributo all'interno 'dizionario _slots' (in classe' Field'), in modo da otterrà valore di default, altrimenti Odoo genererà un errore. Ora ho bisogno di capire come applicare questo senza modificare direttamente il codice sorgente. – Andrius