Modyfikacja jednego z podstawowych dziedzin OpenERP Korzystanie moduł niestandardowy

głosy
6

Czasami nasi użytkownicy OpenERP chcą dokonać małej zmiany do pola w module rdzeń OpenERP. Na przykład, chcą regałowe, Hałas i pola Case na ekran urządzenia, by być dłuższa niż 16 znaków.

Mogę zmienić istniejący pola bez dokonywania zmian w module, który zadeklarował? Wolałbym dokonać zmian poprzez nasz własny moduł niestandardowy, zamiast edycji productsamego modułu.

Utwórz 01/08/2012 o 17:33
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
4

Mam tej pracy, ale mam nadzieję, że ktoś wie, czystszy sposób.

Można dziedziczyć klasę modułu głównego w module niestandardowego, a potem po prostu zadeklarować nowe pole o takiej samej nazwie jak ten, który chcesz zmienić. Zasadniczo wystarczy skopiować deklarację pola z modułu podstawowego, wkleić go do modułu niestandardowego, a następnie wprowadź żądane zmiany. Na przykład, nasz product_notesmoduł rozszerzyły pola Rack, wiersz, i sprawa do 255 z modułu 16.product

_columns = {'loc_rack': fields.char('Rack', size=255),
            'loc_row': fields.char('Row', size=255),
            'loc_case': fields.char('Case', size=255)}

Powodem, dla którego nie podoba to, że masz teraz powielania dla wszystkich innych atrybutów tej dziedzinie. Jeżeli zmienisz długość pola, a następnie moduł rdzenia zmienia tekst pomocy, będzie jeszcze stary tekst pomocy. Miałam nadzieję, że nie będzie jakiś sposób, gdy moduły są ładowane do wejść i ustawić atrybuty dziedzinie rodzica, ale nie mogłem znaleźć żadnych haczyków w odpowiednim czasie.

Jedną ze zmian, które można zrobić łatwiej jest domyślną wartością pola. Wystarczy zadeklarować wartość domyślną dla pola moduł rdzenia w module niestandardowej, a to zastąpienie oryginalnego domyślną. Na przykład, zmieniliśmy ustawienia domyślne dla sale_delayiproduce_delay od tych w tym productmodule .

_defaults = {'sale_delay': lambda *a: 5,
             'produce_delay': lambda *a: 0}
Odpowiedział 01/08/2012 o 17:33
źródło użytkownik

głosy
1

W ODOO możemy zmienić dowolny atrybut pola za pomocą XML.

            <field name="loc_rack" position="attributes">
                <attribute name="string">Axis</attribute>
            </field>

Ale niektóre przypadek jak rozszerzenie rozmiaru polu jej nie powiodło się.

Odpowiedział 20/08/2014 o 08:45
źródło użytkownik

głosy
0

Trzeba odziedziczyć formę produktu.

Proszę bardzo.

from openerp.osv import fields, osv
class product_product(osv.Model)  # <<<v7 

    _inherit = 'product.product'

    _columns = {
    'loc_rack': fields.char('Rack', size=<your size>),
    'loc_row': fields.char('Row', size=<your size>),
    'loc_case': fields.char('Case', size=<your size>)
    }

W prostych słowach wystarczy zmienić pole i zastosować atrybut zmienia to odzwierciedlać.

Odpowiedział 28/08/2014 o 11:04
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more