Overslaan naar inhoud
Menu
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Deze vraag is gerapporteerd
6 Antwoorden
9176 Weergaven

THIS CODE RUN

def name_get(self):

            def _name_get(d):

                name = d.get('name', '')

                identity_no = d.get('identity_no', '')

                reg = '%s ( %s )' % (name, identity_no)

                return (d['id'], reg)

            result = list(map(_name_get, self.read(['name', 'identity_no'])))

            return result


BUT I WANT GIVE A CONDITION LIKE THIS

@api.multi

    def name_get(self):

        if self.identity_no != False :

            def _name_get(d):

                name = d.get('name', '')

                identity_no = d.get('identity_no', '')

                reg = '%s ( %s )' % (name, identity_no)

                return (d['id'], reg)

            result = list(map(_name_get, self.read(['name', 'identity_no'])))

        else :

            def _name_get(d):

                name = d.get('name', '')

                return (d['id'], name)

            result = list(map(_name_get, self.read(['name'])))

        return result

ERROR :
File "/home/ubuntu/mycompany/addons/v11_company_custom/base/partner.py", line 44, in name_get
    if self.identity_no != False :
  File "/home/ubuntu/mycompany/gigerhe/fields.py", line 935, in __get__
    record.ensure_one()
  File "/home/ubuntu/mycompany/gigerhe/models.py", line 4365, in ensure_one
    raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: res.partner(857, 825, 77, 83, 69, 42, 840, 806)
Avatar
Annuleer

Odoo Tips and Development Guide: https://plus.google.com/collection/4UX8UE

Beste antwoord

Hello,

You can modify your code

@api.multi

    def name_get(self):

    for res in self:

        if res.identity_no != False :

            def _name_get(d):

                name = d.get('name', '')

                identity_no = d.get('identity_no', '')

                reg = '%s ( %s )' % (name, identity_no)

                return (d['id'], reg)

            result = list(map(_name_get, res.read(['name', 'identity_no'])))

        else :

            def _name_get(d):

                name = d.get('name', '')

                return (d['id'], name)

            result = list(map(_name_get, res.read(['name'])))

        return result

Thanks

Avatar
Annuleer
Auteur

Hello, Thanks for answering. but it didnt solve my problem. cause when i use that loop another problem come out. so i searching for another alternative.

Just Break your method ..

like

def functionA(A)

def functionB(B):

if your condition:

self.functionA()

else:

self.functionA()

Auteur

there is an error TypeError: 'NoneType' object is not iterable

Auteur

well i will try it

Beste antwoord

Try this one 

@api.multi

def name_get(self):

    res = []

    for order in self:

        if order.identity_no != False :

            name = '%s ( %s )' % (order.name, order.identity_no)

            res.append((order.id, name))

        else :

            name= order.name

            res.append((order.id, name))

    return res

Avatar
Annuleer
Gerelateerde posts Antwoorden Weergaven Activiteit
0
apr. 22
2313
3
mrt. 19
6775
1
mrt. 18
6176
4
feb. 18
5082
1
dec. 21
3998