콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
6 답글
9497 화면

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)
아바타
취소

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

베스트 답변

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

아바타
취소
작성자

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

작성자

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

작성자

well i will try it

베스트 답변

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

아바타
취소
관련 게시물 답글 화면 활동
0
4월 22
2612
3
3월 19
7087
1
3월 18
6534
4
2월 18
5408
1
12월 21
4311