динамическое изменение полей. выбор - PullRequest
1 голос
/ 07 июня 2019

Цель : в поле Месяц будет отображаться текущий месяц и предыдущий месяц до 10 числа текущий месяц, для 11 числа будет отображаться только опция текущего месяца.

Я искал вопросы с похожими проблемами и перепробовал все, что мог, поэтому вот что я пробовал до сих пор ...

.py

MONTH_LIST = [
    ('january','JANUARY'),
    ('february','FEBRUARY'),
    ('march','MARCH'),
    ('april','APRIL'),
    ('may','MAY'),
    ('june','JUNE'),
    ('july','JULY'),
    ('august','AUGUST'),
    ('september','SEPTEMBER'),
    ('october','OCTOBER'),
    ('november','NOVEMBER'),
    ('december','DECEMBER')
    ]


def _get_month(self, cr, uid, ids, field_name, arg, context=None):
        val = {}
        date_now = datetime.datetime.now()
        day = date_now.day
        month = date_now.month

        if day<10:
            val['month_val'] = MONTH_LIST[month-1][1] + MONTH_LIST[month-2][1]
        else:
            val['month_val'] = MONTH_LIST[month-1][1]

        return val


'month_val': fields.function(_get_month,  string='Month', type='selection', selection=MONTH_LIST, required=True),

Traceback-

2019-06-07 12:51:43,029 20396 INFO expensetest werkzeug: 127.0.0.1 - - [07/Jun/2019 12:51:43] "GET /web/binary/image?model=hr.employee&field=image_medium&id=283 HTTP/1.1" 200 -
2019-06-07 12:51:43,109 20396 INFO expensetest werkzeug: 127.0.0.1 - - [07/Jun/2019 12:51:43] "POST /web/dataset/call_kw/hr.expense.expense/fields_view_get HTTP/1.1" 200 -
2019-06-07 12:51:43,121 20396 INFO expensetest werkzeug: 127.0.0.1 - - [07/Jun/2019 12:51:43] "GET /web/binary/image?model=hr.employee&field=image_medium&id=257 HTTP/1.1" 200 -
2019-06-07 12:51:43,128 20396 INFO expensetest werkzeug: 127.0.0.1 - - [07/Jun/2019 12:51:43] "GET /web/binary/image?model=hr.employee&field=image_medium&id=265 HTTP/1.1" 200 -
2019-06-07 12:51:43,187 20396 INFO expensetest werkzeug: 127.0.0.1 - - [07/Jun/2019 12:51:43] "GET /web/binary/image?model=hr.employee&field=image_medium&id=217 HTTP/1.1" 200 -
2019-06-07 12:51:43,404 20396 ERROR expensetest openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\http.py", line 530, in _handle_exception
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\http.py", line 567, in dispatch
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\http.py", line 303, in _call_function
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\service\model.py", line 113, in wrapper
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\http.py", line 300, in checked_call
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\http.py", line 796, in __call__
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\http.py", line 396, in response_wrap
  File "C:\Program Files\Odoo 8.0-20150515\server\openerp\addons\web\controllers\main.py", line 876, in search_read
  File "C:\Program Files\Odoo 8.0-20150515\server\openerp\addons\web\controllers\main.py", line 897, in do_search_read
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\http.py", line 901, in proxy
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\api.py", line 241, in wrapper
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\models.py", line 5144, in search_read
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\api.py", line 241, in wrapper
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\models.py", line 3139, in read
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\api.py", line 239, in wrapper
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\models.py", line 3174, in read
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\api.py", line 239, in wrapper
  File "C:\Program Files\Odoo 8.0-20150515\server\.\openerp\models.py", line 3355, in _read_from_database
KeyError: 1479

Заранее спасибо за поддержку.

1 Ответ

1 голос
/ 07 июня 2019

К сожалению, вы не можете сделать это. В Odoo, значения выбора создаются при запуске Odoo и не могут быть изменены.Как только выбор заполнен вариантами, он не может быть изменен.Попробуйте использовать many2one, вы можете изменить домен динамически, и даже с many2one, если вы используете widget="selection", у вас возникнет проблема, когда домен будет изменен , вам придется дважды обратиться к полю, чтобыувидеть, что список изменен.

...