gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:18:30 27 4
gpt4 key购买 nike

在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com