Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
6 Antworten
9237 Ansichten

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
Verwerfen

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

Beste Antwort

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
Verwerfen
Autor

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()

Autor

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

Autor

well i will try it

Beste Antwort

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
Verwerfen
Verknüpfte Beiträge Antworten Ansichten Aktivität
0
Apr. 22
2378
3
März 19
6867
1
März 18
6230
4
Feb. 18
5144
1
Dez. 21
4097