تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
1 الرد
8398 أدوات العرض

Hi all,

How to check if my one2many field have no value

.when I save a record I make product_id a one2many field require =True.but after  saving this record it will not shows warning it saved.how to avoid this condition

Below attached my code its not showing alert..


class ServiceDetails(models.Model): 
 _name='service.info'
 service_ids=fields.Many2one('crm.lead','Service')
 product_id=fields.Many2one('product.product', 'Service Type',required=True)
 details=fields.Char('Remarks')
class crm_lead(models.Model):
 _inherit='crm.lead'
crm_lead_ids=fields.One2many('service.info','service_ids','Service Details',required=True)

  @api.model
  def create(self, values):
  if self.crm_lead_ids:
  rec = super(crm_lead, self).create(values)
  else:
     raise Warning('You can not add instructor as a attendee')
  return rec
الصورة الرمزية
إهمال
أفضل إجابة

Hello Dep,


Try this :-


from openerp import models, fields, api, _

from openerp.exceptions import UserError

@api.model

def create(self, vals):

    result = super(crm_lead, self).create(vals)

    if not result.crm_lead_ids:

        raise UserError(_('You Can not Add Instructor as a attendee.')

    return result


Hope it will works for you.

Thanks,

الصورة الرمزية
إهمال
الكاتب

Thanks.. Jignesh.. why we used result = super(crm_lead, self).create(vals)

الكاتب

also self.crm_lead_ids: this one and result.crm_lead_ids: this are same right?

Hello Dep, create method is in the base so if we access any existing method, we must call super for it.

الكاتب

ok Thanks..

Dep,
Infact Jignesh method is correct, but if you still want to minimize the execution then we can just check,
if not vals.get('crm_lead_ids', False):
raise UserError(_('Your message.'),

before calling super,

What is the syntax for odoo 13?