Warunkowe wyświetlanie pól w widoku form [Zamknięte]

To pytanie zostało zamknięte z powodu: niezwiązane z tematem lub nieaktualne

przez
Dr.One
na 16.04.2015 21:38:33

Temat zasadniczo został już nieco przerobiony, niemniej po głąbszym zastanowienu chciałbym zasięgnąć porady specjalistów.

Zaistniała potrzeba przygotowania dodatkowych pól w widoku product.form.view. Poradziłem więc sobie w ten sposób, że w zależności od wybranego z listy rozwijanej typu produktu odpowiednia lista/blok pól jest wyświetlana. Teoretycznie mam co chciałem ale nie do końca. Nie do końca dlatego, że wyświetlana jest lista tylko kilku pól ale w tle włączone jest ich bardzo dużo co może w przypadku rozbudowanej bazy stanowić nielada problem. Ponadto nie mogą się powtarzać nazwy pól w grupach ponieważ podczas zapisywania danych do bazy nadpisują się wartości z pól o tych samych nazwach a co za tym idzie po odczytaniu mam albo brednie albo puste pola. W związku z tym każda z grup posiada całą serię własnych specyficznych pól co znowu stanowi spory problem ponieważ w wyszukiwaniu (advanced) mamy dostępną listę pól w/g których wysukujemy ale mimo tej samej nazwy pola te odnoszą się do zupełnie innych produktów. W jednym przypadku jest to np komputer w drugim monitor i obydwa te pola mają nazwę "size" OK można zmienić nazy na specyficzne, indywidualne ale w dalszym ciągu jest ich ... mnóstwo.

Pomyślałem, że można by napisać skrypt/program który w zależności od wybranego produktu/typu z listy generował by odpowiednią listę pól oczywiście na bazie jakiejś tablicy z zapisanymi konfiguracjami pól. Skomplikowałem to chyba zbytnio. Macie jakiś pomysł jak to uprościć ?

W tej chwili wygląda to tak (przykład):

Komputer:
   - marka
   - model
   - wielkość
   - procesor itd

Monitor:
   - marka
   - model
   - wielkość
   - stan ... itd

Jak widać pola się powtarzają ale jak pisałem nie można w takiej konfiguracji prawidłowo zapisywać danych do bazy.
Oczywiście mogę ustalić pola które będą bez względu na typ urządzenia stale na ekranie, pozwoli to na niewielkie ograniczenie ich liczby ale to nie rozwiązuje problemu. W tej chwili wszystkich pól mam ze 200 a z pewnością można by się ograniczyć do powiedzmy 30.

Jak rozwiązalibyście taki problem ?

 

Dr.One
Dr.One
341
| 5 3 5
Data pytania 26.03.2015, 00:14
0
głos
825 Odsłony

Hej Panie Dariusz ;)
Nie wiedziałem, że to ty piszesz na forum odoo.com do dzisiaj. Dziwne, że nie skojarzyłem "Zbik" ze "Żbikowski" :)

Ale do rzeczy. Na Odoo.com pisałeś jakiś czas temu na temat https://www.odoo.com/forum/help-1/question/conditional-field-domain-how-partly-solved-75604
Własnie się natknąłem na ten post i naszła mnie taka myśl: czy mozna w ten sposób (pytam bo nie wiem) zdefiniować kilka/kilkanaście/kilkadziesiąt domen i zależnie od wybranego produktu uruchamiać tylko pola w danej domenie zawarte ?

Czy to nie działa w ten sposób ?

A jeśli tak to jak zdefiniować listę pól należących do danej domeny ?

W podanym przykładzie wykorzystywałeś:

if xxx:
"field name="yyy_ids" widget="many2many" domain="[...version1....]"
if yyy:
"field name="zzz_ids" widget="many2many" domain="[...version2....]"

Co znaczy ... version1.... ....version2.... co można tam umieścić i jak powinno to wyglądać ?

Ja w moim module rozszerzającym model product zrobiłem to na zasadzie ukrywania badź pokazywania odpowiednich pól warunkowane wybranym produktem ale nie jest to idealne rozwiązanie.
Chciałbym zrobić lepiej o ile można ;)

Wyobrażam to sobie w ten sposób, domena zawierała by nazwy i typy pól która na żądanie byłaby ładowana. Wtedy nie potrzebował bym tak wielkiej ilości pól jaka mam w tej chwili. Mam wrażenie, że ta ogromna ilość powoduje powolne ładowanie zawartości stron. Z drugiej strony ..... serwer mam dość sprawny (4xXeonQuad2.8/16rdzeni/64GB RAM/5TB RAID5 i Gigabitowa sieć - oczywiście niektóre jednostki mogą mieć nieco wolniejsze sieciówki ale to nie powinno wpływać znacząco na działanie systemu)

Oczywiście pozostawiam to Tobie, czy zechcesz mi pomóc rozwiązać ten problem. Niemniej liczę po cichu na podpowiedź.

P.S.
Poczytałem trochę na temat o którym pisałem ostatnio mianowicie zbieranie wartości z wielu pól i umieszczanie połączonego ciągu w jednym polu.
Podesłany przez ciebie link wskazał co trzeba, jednakże działanie tych modułów pozostawia wiele do życzenia :) Mówiąc wprost, żadnego nie mogłem do tej pory zainstalować :) Wciąż wywala błędy. Nie odpuszczam jednak i będę próbował dalej na innym systemie gdzie nie mam tak namieszane. Być może któryś z dodatkowych modułów powoduje te problemy.

Pozdrawiam
Robert

Dr.One
na 31.03.2015, 09:43

Ten link pewnie wystraczy za komentarz: https://github.com/odoo/odoo/issues/5199. Jak pewnie zauważyłeś problem został oznaczony tylko jako częsciowo rozwiązany. PS. wartość ...version1.... to jakeś dowolne wyrażenie które może służyć do filtracji za pomocą odoowego domain

Dariusz Żbikowski
na 31.03.2015, 15:02

Ponieważ w nowej koncepcji wykorzystałem attr i filtrowanie zmniejszyłem ilość pól z ponad 400 do 23 :)
i zdecydowanie poprawiła się szybkość reakcji i wykonywania operacji :)

Wykorzystałem inaczej powtarzające się pola, zmieniając tylko dynamicznie opisy(labele) pozostawiając pole jako takie, nie wpłynie to   na zapisywane dane w żaden sposób więc jest pozytywnie ;)

 

Dr.One
Dr.One
341
| 5 3 5
Data odpowiedzi 09.04.2015, 23:15
0
głos

Może ten link Cię zainteresuje.

Dariusz Żbikowski
Dariusz Żbikowski
1263
| 4 3 3
Data odpowiedzi 27.03.2015, 12:36
0
głos

Twoja odpowiedź

Spróbuj dać znacząca odpowiedź. Jeśli chcesz wypowiedzieć się na temat pytania lub odpowiedzi, po prostu użyj narzędzia komentowania. Proszę pamiętać, że zawsze można zrewidować swoją odpowiedź - nie ma potrzeby odpowiadać na to samo pytanie dwa razy. Także prosimy, nie zapomnij zagłosować - to naprawdę pomaga wybrać najlepsze pytania i odpowiedzi!

Zadaj Pytanie

Bądź na bieżąco

O tym forum

Forum dla profesjonalistów i entuzjastów systemu Odoo. Dyskusje, porady, opinie, komentarze.

Przeczytaj wytyczne

Narzędzia do pytań

3 obserwujący

Statystyki

Spytał/a: 26.03.2015, 00:14
Oglądano: 825 razy
Ostatnia aktualizacja: 16.04.2015, 21:38