python - 如何使用 odoo 中的 ORM 方法从表中获取不同的值

标签 python odoo odoo-8

在 Odoo 中,我有一个模型“电子邮件规则”,其中有一列number_of_days

现在我需要做的是在没有火查询的情况下从该模型中找到不同的 number_of_days,我的意思是我想使用 ORM 方法而不是查询。

我该怎么做?我对此不太了解。

Odoo search_read 和搜索方法从表中获取数据。

def search_read(self, cr, uid, domain=None, fields=None, offset=0, limit=None, order=None, context=None):
        """
        Performs a ``search()`` followed by a ``read()``.

        :param cr: database cursor
        :param user: current user id
        :param domain: Search domain, see ``args`` parameter in ``search()``. Defaults to an empty domain that will match all records.
        :param fields: List of fields to read, see ``fields`` parameter in ``read()``. Defaults to all fields.
        :param offset: Number of records to skip, see ``offset`` parameter in ``search()``. Defaults to 0.
        :param limit: Maximum number of records to return, see ``limit`` parameter in ``search()``. Defaults to no limit.
        :param order: Columns to sort result, see ``order`` parameter in ``search()``. Defaults to no sort.
        :param context: context arguments.
        :return: List of dictionaries containing the asked fields.
        :rtype: List of dictionaries.

        """


@api.returns('self')
    def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
        """ search(args[, offset=0][, limit=None][, order=None][, count=False])

        Searches for records based on the ``args``
        :ref:`search domain <reference/orm/domains>`.

        :param args: :ref:`A search domain <reference/orm/domains>`. Use an empty
                     list to match all records.
        :param int offset: number of results to ignore (default: none)
        :param int limit: maximum number of records to return (default: all)
        :param str order: sort string
        :param bool count: if True, only counts and returns the number of matching records (default: False)
        :returns: at most ``limit`` records matching the search criteria

        :raise AccessError: * if user tries to bypass access rules for read on the requested object.
        """

现在我需要做的是先找出所有数据,然后通过Pythonic方式使其唯一,这是相当令人厌恶的。

因此,如果有人知道这方面的智能解决方案,那就太好了。

最佳答案

您可以使用distinct_field_get()
例如,如果您想获得不同的合作伙伴名称,您可以这样做:

partners = self.env['res.partner']
values = partners.distinct_field_get(field='name', value='')
return set(values)

关于python - 如何使用 odoo 中的 ORM 方法从表中获取不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34021005/

相关文章:

python - 使用正则表达式查找模式后的所有内容,但排除变量

python - 文件上传问题 - Python-WIndows-CheryyPy

python - 为什么 odoo 中的许多记录的 sql 查询速度更快?

javascript - Odoo:使用支付收单方添加 Stripe

javascript - 单击项目看板打开任务,想要更改它 - odoo

python - 基本的 Python/Beautiful Soup 解析

python - 保存 Pillow 图像时如何正确设置 DPI?

postgresql - 为什么开始使用 PostgreSQL 时必须创建一个新用户?

Odoo 8 - 如何创建一个包含弹出消息并刷新实际 View 的按钮?

odoo - odoo 10 中 res_model、src_model 和模型术语有什么区别?