我需要的是,一旦我选择了patient,当我搜索选择patient时,我希望显示唯一与所选患者相关的nameLab (patient_id = patient)。
我的类:
class labinvoice (models.Model):
_name = "lab.invoice"
order_line = fields.One2many('lab.order.line', 'order_id', string='Order Lines', copy=True)
nameLab = fields.Many2one('medical.lab.patient',related='order_line.namelab')
patient = fields.Many2one('medical.patient',related='order_line.patient_id')
patient_id = fields.Many2one(comodel_name='medical.patient',required=True, )
class LabOrderLine(models.Model):
_name = 'lab.order.line'
nameLab = fields.Many2one(
string='Lab',
comodel_name='medical.lab.patient',
required=True,
ondelete='cascade',
)
patient= fields.Many2one(
'medical.patient',
string='patient',
related='nameLab.patient_id',
readonly=True,
required=True,
)
我的观点是:
<record id="view_invoice_lab_form" model="ir.ui.view">
<field name="name">lab.invoice.form</field>
<field name="model">lab.invoice</field>
<field name="arch" type="xml">
<form string="Labs Invoices" class="o_sale_order">
<sheet>
<div class="oe_title">
<h1>
<field name="name" readonly="1"/>
</h1>
</div>
<group>
<group>
<field name="patient_id" />
</group>
</group>
<notebook>
<page string="Order Lines">
<field name="order_line" mode="tree,kanban">
<tree string="labs Order Lines" editable="bottom" >
<field name="nameLab" />
<field name="patient" />
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
我尝试做的是像saleOrder这样的东西,但在这里我不是选择客户,而是选择患者,而不是选择产品,我应该选择与患者相关的nameLab
@api.onchange('patient_id')
def onchange_patient(self):
if self.patient_id:
#to clean the line everytime i change the patient
self.order_line = False
return {'domain':{'nameLab':[('patient','=',self.patient_id.id)]}}
我认为问题是由于one2many关系造成的
发布于 2017-08-04 17:38:19
我们可以在家长的改变上解决这个问题!
我们之所以处理这个问题,是因为函数可以在onchange本身返回一个域...
就像-->
@api.onchange('patient')
def onchange_patient(自身):
if self.patient:
return {'domain':{'namelab':[('id','in',self.patient.namelab.ids)]}}
认为这很有帮助
毗湿奴
发布于 2017-08-04 06:53:05
您正在寻找domain
,它可以用Python或XML在您的字段中设置,但通常XML是最常见的使用方式。
按照现在表单的设计方式,您可以进行此更新。
<field name="nameLab" domain="[('partner_id', '=', partner)]"/>
有关更多详细信息,请参阅documentation。
https://stackoverflow.com/questions/45488821
复制相似问题