基于odoo11上的SQL查询构建一个新的视图或模型

2024-09-10 14:50:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个奥多模块。在

我希望我的模块是一个“报告”大多数购买的产品(按客户)。在

我已经在Odoo上创建了一个视图,但是现在,我需要按客户“过滤”这些视图。代码如下:

class SaleProductsByCustomer(models.Model):
_name = "sale.order.product"
_auto = False

partner_id = fields.Many2one('res.partner')
orders = fields.Integer(string='Total Orders')
name = fields.Char(string='Name')
price_total = fields.Float(string='Total Payment')
qty = fields.Integer(string='Qty Ordered')
last_order = fields.Date(string='Last Order Date')

@api.model_cr
def init(self):
    tools.drop_view_if_exists(self._cr, 'sale_order_product')
    tools.drop_view_if_exists(self._cr, 'sale_order_product_report')
    self._cr.execute("""
        CREATE OR REPLACE VIEW sale_order_product_report AS (
            SELECT so.order_partner_id AS id, count(so.id) AS orders, pt.name, sum(so.price_total) AS price_total,
                sum(so.product_uom_qty) AS qty, max(so.create_date) AS last_order
            FROM public.sale_order_line AS so
            LEFT JOIN public.product_product AS pr ON so.product_id = pr.id
            LEFT JOIN public.product_template AS pt ON pr.product_tmpl_id = pt.id
            GROUP BY so.order_partner_id, so.product_id, pt.name
            ORDER BY qty DESC
        )""")

我尝试使用以下代码访问这些视图:

^{pr2}$

但奥多拒绝阅读,错误如下:

2018-12-13 03:05:36,889 13482 ERROR xx odoo.sql_db: bad query: b'SELECT "sale_order_product".id FROM "sale_order_product" WHERE ("sale_order_product"."partner_id" = 107989) ORDER BY "sale_order_product"."id" ' ERROR: relation "sale_order_product" does not exist

显然,即使我有销售订单产品“,我不能参考它做我想做的事。在

我已经阅读了很多关于定制报表和定制SQL查询的指南,但是我找不到一个完整的指南来做,而且我对odoo模块的了解也不多。在

SQL查询已经过测试并且工作正常。我需要的是对SQL应用WHERE子句,并将结果放到视图中。在

我的观点是:

    <record model="ir.ui.view" id="sale_order_form_views_customer_history">
    <field name="name">sale.order.form.view.customer.product.history</field>
    <field name="model">res.partner</field>
    <field name="inherit_id" ref="base.view_partner_form"/>
    <field name="arch" type="xml">
        <xpath expr="//notebook" position="inside">
            <page name="customer_product_history" string="Customer Product History">
                <field name="customer_product_history_ids">
                </field>
            </page>
        </xpath>
    </field>
</record>

注意:我读了很多指南,在stackoverflow和其他网站上,但没有人能涵盖我的所有要求。如果你认为这篇文章是重复的,请给我评论一下另一篇。在

谢谢你的帮助。在


Tags: nameview视图idfieldfieldspartnerstring
1条回答
网友
1楼 · 发布于 2024-09-10 14:50:39

模型的名称应该与视图的名称匹配。在

     _name = 'sale.order.product.report'

这就是你犯这个错误的原因。在

或者告诉odoo这个模型和数据库中的特定表相关

^{pr2}$

注意:您可以像普通表一样与视图交互

相关问题 更多 >