首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何处理动态域?

如何处理动态域?
EN

Stack Overflow用户
提问于 2017-08-03 23:38:52
回答 2查看 717关注 0票数 0

我需要的是,一旦我选择了patient,当我搜索选择patient时,我希望显示唯一与所选患者相关的nameLab (patient_id = patient)。

我的类:

代码语言:javascript
复制
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,
    )

我的观点是:

代码语言:javascript
复制
<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

代码语言:javascript
复制
    @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关系造成的

EN

回答 2

Stack Overflow用户

发布于 2017-08-04 17:38:19

我们可以在家长的改变上解决这个问题!

我们之所以处理这个问题,是因为函数可以在onchange本身返回一个域...

就像-->

@api.onchange('patient')

def onchange_patient(自身):

代码语言:javascript
复制
if self.patient:
    return {'domain':{'namelab':[('id','in',self.patient.namelab.ids)]}}

认为这很有帮助

毗湿奴

票数 2
EN

Stack Overflow用户

发布于 2017-08-04 06:53:05

您正在寻找domain,它可以用Python或XML在您的字段中设置,但通常XML是最常见的使用方式。

按照现在表单的设计方式,您可以进行此更新。

<field name="nameLab" domain="[('partner_id', '=', partner)]"/>

有关更多详细信息,请参阅documentation

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45488821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档