首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Odoo 10选择字段值

Odoo 10选择字段值
EN

Stack Overflow用户
提问于 2017-09-20 14:04:39
回答 2查看 8.5K关注 0票数 3

如何获得odoo 10中的选择字段值?

代码语言:javascript
运行
复制
def compute_default_value(self):
    return self.get_value("field")

我试过这个,

代码语言:javascript
运行
复制
def compute_default_value(self):
   return dict(self._fields['field'].selection).get(self.type)

也试过这个,但不起作用。请帮帮我,我找不到解决办法。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-21 11:30:41

您可以以下列方式进行此操作:

代码语言:javascript
运行
复制
self._fields['your_field']._desription_selection(self.env)

这将返回对的选择列表(值、标签)。

如果您只需要可能的值,则可以使用get_values方法。

代码语言:javascript
运行
复制
self._fields['your_field'].get_values(self.env)

但这不是一种常见的方式。大多数情况下,人们对选择的定义不同,然后使用这些定义。例如,我通常为这些类使用类。

代码语言:javascript
运行
复制
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'
    }

您可以在任何地方使用这个类,只需导入它。

代码语言:javascript
运行
复制
state = fields.Selection(StateType.get_selection(), 'State')

在代码中使用这些是非常方便的。例如,如果要在特定状态下执行某项操作:

代码语言:javascript
运行
复制
if self.state == StateType.NEW:
    # do your code ...
票数 4
EN

Stack Overflow用户

发布于 2017-09-21 07:05:15

我没有完全理解这个问题,但让我试着回答。为什么不将选择定义为方法,并将其用于这两种情况:

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46324252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档