This question has been flagged
1 Reply
3596 Views

I've got a wizard for analysis of sales that has a O2M relation to a transient model that has a M2O relation on crm.team and a M2M relation to res.users.


ModelA(models.TransientModel):
	_name = 'model.a'

	sale_team_ids = fields.One2many(comodel_name='model.b', inverse_name='wizard_id')


ModelB(models.TransientModel):
	_name = 'model.b'
	
	team_id = fields.Many2one(comodel_name='crm.team')
	user_ids = fields.Many2many(comodel_name='res.users')
	
	wizard_id = fields.Many2one(comodel_name='model.a')
	
	
	<record id="model_a_form_view" model="ir.ui.view">
		<field name="name">Model A</field>
		<field name="model">model.a</field>
		<field name="arch" type="xml">
			<form>
				<sheet>
					<field name="sale_team_ids" nolabel="1">
						<tree create="1" editable="bottom">
							<field name="team_id" required="1"/>
							<field name="user_ids" widget="many2many_tags" domain="[('sale_team_id', '=', 'team_id')]"/>
							<field name="show_user_data"/>
						</tree>
					</field>
				</sheet>
			</form>
		</field>
	</record>


I need a domain that shows only users that are in the sale team. How can I do this with a domain in the view?


I've got a method that on.change of team_id gets a list of users that are in the sale team.

@api.onchange('team_id')
def _get_domain(self):
	if self.team_id:
		domain_users = [('id', 'in', self.team_id.member_ids.ids)]
		return {'domain': {'user_ids': domain_users}}


But the domain is active only once, after the focus is lost and the user does not change the team_id it shows all users.


So how cam I create a better domain filter and in the view and not in python? 


Avatar
Discard
Author Best Answer

I messed up the domain... couldn't see it yesterday but today I've seen the mistake at first glance.

The domain was domain="[('sale_team_id', '=', 'team_id')]"
it should be domain="[('sale_team_id', '=', team_id)]"

Now it works.

Avatar
Discard