This question has been flagged
3 Replies
5066 Views

Hi,

I have a custom Many2one field defined in the model account.invoice which uses the model account.analytic.account and is using a domain in xml as domain="[('customer', '=', True)]" required="1". The domain field here is from account.invoice so when i execute this code it gives an error as

ValueError: Invalid field 'customer' in leaf "<osv.ExtendedLeaf: ('customer', '=', True) on account_analytic_account (ctx: )>"

The field is defined as follows

class AccountInvoiceInherit(models.Model):
_inherit = 'account.invoice'
company_selection = fields.Many2one('account.analytic.account', string="Company")

In the view, i'm using as follows

<record model="ir.ui.view" id="invoice_form_inherit">
<field name="name">account.invoice.form.inherit.account</field>
<field name="model">account.invoice</field>
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<xpath expr="//form/sheet/group[1]/group[2]" position="replace">
<group>
<field name="company_selection" domain="[('customer', '=', True)]" required="1"/>
</group>
</xpath>
</field>
</record>

Can anyone tell me how to use the domain of another model?


Avatar
Discard
Author Best Answer

I know it is not the correct way to do it but for the time being i solved the issue by using attrs in xml of the invoice screen and did not use any attrs in bills screen as

<field name="company_selection" attrs="{'required': True}"/>

This essentially makes the field required in invoices and not required in bills, It solved the requirement but not in the right way.

If anyone knows the answer to the question, please do answer it.

Thanks,

Sameer

Avatar
Discard
Best Answer

this worked for me

domain="[('customer', '!=', False)]"

Avatar
Discard
Author

I want the field to be required in one screen and not required in another and since the domain and the many2one fields model differ from each other it is throwing me an error and no it didn't work for me