W Odoo v8 użyto wielu dekoratorów API. Ale nie rozumiem głównej różnicy między @ api.depends i @ api.onchange.Jaka jest główna różnica między @ api.onchange a @ api.depends w Odoo (openerp)?
Czy ktoś może mi pomóc z tego?
Dziękuję.
W Odoo v8 użyto wielu dekoratorów API. Ale nie rozumiem głównej różnicy między @ api.depends i @ api.onchange.Jaka jest główna różnica między @ api.onchange a @ api.depends w Odoo (openerp)?
Czy ktoś może mi pomóc z tego?
Dziękuję.
@ api.depends
ten dekorator jest wykorzystywane specjalnie dla "fields.function" w odoo. W przypadku funkcji "field.function" można obliczyć wartość i zapisać ją w polu, gdzie może się zdarzyć, że obliczenie będzie zależało od innych pól tej samej tabeli lub innej tabeli, w takim przypadku można użyć " @ api.depends ", aby zachować" zegarek "na polu pewnego stołu.
To wywoła wywołanie funkcji ozdobnej, jeśli dowolne z pól w dekoratorze to "zmienione przez ORM lub zmienione w postaci".
Powiedzmy znajduje się stół 'A' z pola "x, y & oo" oraz tabeli 'B' z pola "p", gdzie 'p' jest field.function zależności od pola 'x' z tabeli "A", więc jeśli jakakolwiek zmiana zostanie wprowadzona w polu "x", wywoła ona dekorowaną funkcję do obliczenia pola "p" w tabeli "B".
Upewnij się, że tabela "A" i "B" są w jakiś sposób powiązane.
@ api.onchange
ten dekorator spowoduje wywołanie funkcji zdobione, jeśli któryś z dziedzin określonych w dekoratora zostanie zmieniony w formularzu. Tutaj zakres jest ograniczony do tego samego ekranu/modelu.
Załóżmy, że w formularzu mamy pola "DOB" i "Wiek", więc możemy mieć dekorator @ api.onchange dla "DOB", gdzie po zmianie wartości "DOB" możesz obliczyć pole "wiek".
Możesz wyróżnić podobieństwa w @ api.depends i @ api.onchange, ale niektóre różnice polegają na tym, że zakres zmiany jest ograniczony do tego samego ekranu/modelu, podczas gdy @ api.depends działa również na inny pokrewny ekran/model.
Aby uzyskać więcej informacji, Here jest linkiem, który opisuje wszystkie API Odoo v8.
@ api.onchange działa w przypisaniu wirtualnych rekordów do tych rekordów nie jest zapisywane w bazie danych, używane tylko do sprawdzenia, którą wartość wysłać do klienta.
Pola można obliczyć (zamiast odczytać z bazy danych) za pomocą parametru obliczeniowego, należy przypisać do pola wartość obliczoną, wykorzystuje ona wartości innych pól z tego samego modelu lub innych modeli (w przeciwieństwie do @api. onchange, który działa tylko z polami w tym samym widoku), powinien określać pola przy użyciu api.depends ().
Aby uzyskać więcej informacji. Sprawdź nasz blog: https://odooforbeginnersblog.wordpress.com/2017/03/01/how-to-override-an-api-depends-decorated-method/
Dzięki [email protected] Patadia za twoje wyjaśnienie. –
dobre wyjaśnienie na przykładzie. Dziękuję za udostępnienie. –