Python 如何使用计算字段创建弹出式向导?

Python 如何使用计算字段创建弹出式向导?,python,odoo,odoo-8,Python,Odoo,Odoo 8,我正在尝试创建一个弹出向导,其中包含一个选择,其中包含来自计算函数的值。如下图所示。我仍然无法设置选择字段值。内部函数\u获取\u报价单\u so我总是获取self.medical\u报价单\u idFALSE 是否有方法填充选择字段值?可能在create功能中?有人能告诉我怎么做吗 class MedicalQuotationInvoiceWizard(models.Model): _inherit = 'medical.quotation' def compute_medical_

我正在尝试创建一个弹出向导,其中包含一个选择,其中包含来自计算函数的值。如下图所示。我仍然无法设置
选择
字段值。内部函数
\u获取\u报价单\u so
我总是获取
self.medical\u报价单\u id
FALSE

是否有方法填充选择字段值?可能在
create
功能中?有人能告诉我怎么做吗

class MedicalQuotationInvoiceWizard(models.Model):
_inherit = 'medical.quotation'

    def compute_medical_quotation_so(self):
        # import ipdb; ipdb.set_trace()
        so = []
        sos = self.medical_quotation_so_ids.search([('medical_quotation_id.id', '=', self.id)])
        for record in sos:
            so.append((record.id, record.name))
        return so

    @api.multi
    def invoice_wizard(self):
        # for record in self:
        params={}
        view_id=self.env['prescription.invoice.wizard']
        params = {
            'medical_quotation_id': self.id,
            'invoice_version': self.invoice_version,
        }
        new = view_id.create(params)
        return {
            'type': "ir.actions.act_window",
            'name': "Invoice Wizard",
            'res_model': "prescription.invoice.wizard",
            'view_type': "form",
            'view_mode': "form",
            'res_id': new.id,
            'view_id': self.env.ref('medical_prescription.view_prescription_invoice_wizard', False).id,
            'target': "new",
        }



class PrescriptionInvoiceWizard(models.TransientModel):
_name = 'prescription.invoice.wizard'

    def _get_prescription_invoice(self):
        medical_quotation = self.env['medical.quotation']
        return medical_quotation.compute_prescription_invoice()

    invoice_version = fields.Selection(string="Invoice Version",
        selection=lambda self: self._get_prescription_invoice())

    logo = fields.Boolean("Company Logo")
    paging = fields.Boolean("Paging")

    medical_quotation_id = fields.Many2one(comodel_name='medical.quotation', string="Medical Quotation")

    @api.model
    def create(self, values):
        # Override the original create function for the res.partner model
        record = super(PrescriptionInvoiceWizard, self).create(values)
        import ipdb; ipdb.set_trace()

        medical_quotation = self.env['medical.quotation'].search([('id', '=', values['medical_quotation_id'])])

        record['medical_quotation_id'] = medical_quotation

        # Return the record so that the changes are applied and everything is stored.
        return record

    @api.depends('medical_quotation_id')
    def _get_quotation_so(self):
        # import ipdb; ipdb.set_trace()
        medical_quotation = self.env['medical.quotation'].search([('id', '=', self.medical_quotation_id.id)])  <--- HERE self.medical_quotation_id ALWAYS FALSE
        return medical_quotation.compute_medical_quotation_so()

    medical_quotation_so_select = fields.Selection(string="SO",
        selection=lambda self: self._get_quotation_so())
class MedicalQuotationInvoiceWizard(models.Model):
_inherit='medical.quote'
def compute_medical_QUOTE_so(自我):
#进口ipdb;ipdb.set_trace()
so=[]
sos=self.medical\u quote\u so\u id.search([('medical\u quote\u id.id','=',self.id)])
在sos中记录:
so.append((record.id,record.name))
如此回报
@api.multi
def发票_向导(自身):
#请自行记录:
参数={}
view_id=self.env['prescription.invoice.wizard']
参数={
“医疗报价单id”:self.id,
“发票版本”:self.invoice\u版本,
}
新建=视图\u id.create(参数)
返回{
'type':“ir.actions.act_窗口”,
“名称”:“发票向导”,
'资源模型':“处方.发票.向导”,
“视图类型”:“表单”,
“查看模式”:“表单”,
“res_id”:new.id,
'view\u id':self.env.ref('medical\u prescription.view\u prescription\u invoice\u wizard',False).id,
'目标':“新”,
}
类处方InvoiceWizard(models.TransientModel):
_名称='处方.发票.向导'
def_获取_处方_发票(自行):
medical\u QUOTE=self.env['medical.QUOTE']
返回医疗报价单。计算处方发票()
发票版本=字段。选择(string=“发票版本”,
选择=lambda self:self.\u获取\u处方\u发票()
logo=fields.Boolean(“公司徽标”)
分页=字段。布尔值(“分页”)
medical\u QUOTE\u id=fields.manyOne(comodel\u name='medical.QUOTE',string=“medical QUOTE”)
@api.model
def创建(自身、值):
#覆盖res.partner模型的原始创建函数
记录=超级(处方文件向导,自我)。创建(值)
进口ipdb;ipdb.set_trace()
medical\u QUOTE=self.env['medical.QUOTE'].search([('id','=',value['medical\u QUOTE\u id']))
记录['medical_QUOTE_id']=medical_QUOTE
#返回记录,以便应用更改并存储所有内容。
返回记录
@api.视情况而定(“医疗报价单id”)
def_get_quote_so(自我):
#进口ipdb;ipdb.set_trace()

medical\u QUOTE=self.env['medical.QUOTE'].search([('id','=',self.medical\u QUOTE\u id.id)])我实际上解决了这个问题,但没有使用
选择字段。我使用了
manyOne字段
,然后在xml中放入
,该域使用另一个
字段
进行过滤


就这样。如果python后端无法做到这一点。那么我猜视图前端会这样做。

方法compute\u medical\u quote\u so()做什么?它没有显示在你的代码中我已经在问题中添加了代码