Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在openerp中多次继承类?_Python_Openerp_Openerp 7 - Fatal编程技术网

Python 如何在openerp中多次继承类?

Python 如何在openerp中多次继承类?,python,openerp,openerp-7,Python,Openerp,Openerp 7,我需要将purchase order类继承为两种类型。一个是针对只能出售的产品的采购订单,另一个是针对只能购买的产品的采购订单 我试图将核心purchase.order对象继承到两个新的自定义对象中。但是它不起作用 我的代码是 from osv import fields, osv class purchase_order_saleok(osv.osv): _inherit = 'purchase.order' _name = 'purchase.order.saleok' S

我需要将purchase order类继承为两种类型。一个是针对只能出售的产品的采购订单,另一个是针对只能购买的产品的采购订单

我试图将核心
purchase.order
对象继承到两个新的自定义对象中。但是它不起作用

我的代码是

from osv import fields, osv

class purchase_order_saleok(osv.osv):

  _inherit = 'purchase.order'
  _name = 'purchase.order.saleok'

  STATE_SELECTION = [
    ('draft', 'Draft PO'),
    ('pending', 'Pending'),
    ('sent', 'RFQ Sent'),
    ('confirmed', 'Waiting Approval'),
    ('approved', 'Confirmed'),
    ('except_picking', 'Shipping Exception'),
    ('except_invoice', 'Invoice Exception'),
    ('done', 'Ordered'),
    ('cancel', 'Cancelled')]

  _columns =  {
    'state': fields.selection(
       STATE_SELECTION, 
       'Status', 
       readonly=True, 
       help="The status of the purchase order or the quotation request. A quotation is a purchase order in a 'Draft' status. Then the order has to be confirmed by the user, the status switch to 'Confirmed'. Then the supplier must confirm the order to change the status to 'Approved'. When the purchase order is paid and received, the status becomes 'Done'. If a cancel action occurs in the invoice or in the reception of goods, the status becomes in exception.",
       select=True
    )
  }

  purchase_order_saleok()

  class purchase_order_line_saleok(osv.osv):
    _inherit = 'purchase.order.line'
    _name = 'purchase.order.line.saleok'

  purchase_order_line_saleok()

有人能帮我吗?

为了将这些表添加到数据库中,您必须重新启动服务器和模块(正如Lukasz Puchala所说)。您的代码应该创建新表

但我不明白您的第一个需求,为什么不使用sale.order来表示可以销售的产品,而使用purchase.order来表示可以购买的产品

仅供参考:


您不需要创建purchase.order.line.saleok(因为它永远不会被使用),因为您的purchase.order.saleok将保留其第一个\u字段定义,它将创建标准purchase.order.line而不是purchase.order.line.saleok(除非您覆盖与purchase.order.line.saleok相关的字段order\u行one2many)。

代码中有什么不起作用?OpenERP是否在数据库中创建purchase\u order\u saleok表?它是否与purchase\u order表相同?它没有在我的服务器上的数据库中创建任何表(6.1)它工作正常。它创建了
purchase\u order\u saleok
表,但当您添加至少一列时,将创建第二个表。您确定您已将文件添加到
\uuuu init\uuuuuuuuuuuy.py
,重新启动服务器并更新了模块吗?当您继承任何模型时,它不会创建新表,它将使用现有表进行此操作…我认为可能是这样的解决您问题的方法可能是创建多个XML视图,并指定过滤条件,而不是多个对象。我不理解您的意思,“我需要将采购订单类继承为两种类型”,这意味着您想要两个子类?或者您想要将实例传递到其他两种类型?感谢Now Dev。实际上,我需要将可销售产品和可购买产品分开。我将根据用户在不同的屏幕中显示。但是我解决了问题。我创建了继承的模块并更新了购买模块。