Odoo 10 选择字段值
Odoo 10 selection fields value
如何在 odoo 10 中获取选择字段值?
def compute_default_value(self):
return self.get_value("field")
我试过了,
def compute_default_value(self):
return dict(self._fields['field'].selection).get(self.type)
这个也试过了,还是不行。
请帮助我,我找不到解决方案。
谢谢。
我没有完全理解问题,但让我试着回答一下。为什么不直接将选择定义为方法并将其用于两种情况:
from datetime import datetime
from odoo import models, fields
class MyModel(models.Model):
_name = 'my.model'
def month_selection(self):
return [(1, 'Month1'), (2, 'Month2')]
def compute_default_value(self):
selection = self.month_selection()
# do whatever you want here
month = fields.Selection(
selection=month_selection, string='Month',
default=datetime.now().month, required=True)
您可以按照以下方式执行此操作:
self._fields['your_field']._desription_selection(self.env)
这将return成对的选择列表(值、标签)。
如果你只需要可能的值,你可以使用get_values
方法。
self._fields['your_field'].get_values(self.env)
但这不是一种常见的方式。大多数时候,人们会以不同的方式定义选择,然后使用这些定义。例如,我通常对这些使用 classes。
class BaseSelectionType(object):
""" Base abstract class """
values = None
@classmethod
def get_selection(cls):
return [(x, cls.values[x]) for x in sorted(cls.values)]
@classmethod
def get_value(cls, _id):
return cls.values.get(_id, False)
class StateType(BaseSelectionType):
""" Your selection """
NEW = 1
IN_PROGRESS = 2
FINISHED = 3
values = {
NEW: 'New',
IN_PROGRESS: 'In Progress',
FINISHED: 'Finished'
}
您可以在任何地方使用这个 class,只需导入它即可。
state = fields.Selection(StateType.get_selection(), 'State')
而且在代码中使用它们真的很方便。例如,如果你想在特定状态下做某事:
if self.state == StateType.NEW:
# do your code ...
如何在 odoo 10 中获取选择字段值?
def compute_default_value(self):
return self.get_value("field")
我试过了,
def compute_default_value(self):
return dict(self._fields['field'].selection).get(self.type)
这个也试过了,还是不行。 请帮助我,我找不到解决方案。
谢谢。
我没有完全理解问题,但让我试着回答一下。为什么不直接将选择定义为方法并将其用于两种情况:
from datetime import datetime
from odoo import models, fields
class MyModel(models.Model):
_name = 'my.model'
def month_selection(self):
return [(1, 'Month1'), (2, 'Month2')]
def compute_default_value(self):
selection = self.month_selection()
# do whatever you want here
month = fields.Selection(
selection=month_selection, string='Month',
default=datetime.now().month, required=True)
您可以按照以下方式执行此操作:
self._fields['your_field']._desription_selection(self.env)
这将return成对的选择列表(值、标签)。
如果你只需要可能的值,你可以使用get_values
方法。
self._fields['your_field'].get_values(self.env)
但这不是一种常见的方式。大多数时候,人们会以不同的方式定义选择,然后使用这些定义。例如,我通常对这些使用 classes。
class BaseSelectionType(object):
""" Base abstract class """
values = None
@classmethod
def get_selection(cls):
return [(x, cls.values[x]) for x in sorted(cls.values)]
@classmethod
def get_value(cls, _id):
return cls.values.get(_id, False)
class StateType(BaseSelectionType):
""" Your selection """
NEW = 1
IN_PROGRESS = 2
FINISHED = 3
values = {
NEW: 'New',
IN_PROGRESS: 'In Progress',
FINISHED: 'Finished'
}
您可以在任何地方使用这个 class,只需导入它即可。
state = fields.Selection(StateType.get_selection(), 'State')
而且在代码中使用它们真的很方便。例如,如果你想在特定状态下做某事:
if self.state == StateType.NEW:
# do your code ...