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

Hello,

My code was working on v7 but when I move it to v8 I am getting an "is not JSON serializable" error

All I want to do is populate a Many2One field when another field in the view changes.

Here is the code which is giving me the error:


 amenity = fields.Many2one('sim.amenities','Payments Cols',required=True,ondelete='cascade')


@api.onchange('building')
def modify_amenities(self):
     res = {'value':{'amenities':False}}
     ret_ids = []
     if self.building:
          ret_ids = self.env['sim.amenities'].search([['cols', '=', self.building.id],])
ret_lines = []
              for amen_id in ret_ids:
ret_sub_list = []
ret_sub_list.append(0)
ret_sub_list.append(False)
ret_lines_dict = {}
amenity_obj = self.env['sim.amenities'].browse(amen_id.id)
print amenity_obj
                ret_lines_dict.update({'name':amenity_obj.name})
ret_sub_list.append(ret_lines_dict)
ret_lines.append(ret_sub_list)
               res = {'value':{'amenity':ret_lines}}
self.amenity = res


Any idea why I might be getting the error or in any case how can I populate the field amenity when the field building changes?

Any tip will be really appreciated! Thanks a lot

아바타
취소

in v8. you can directly write value inside the current record using self. you don't need to assign dictionary.

베스트 답변

Hi,

Here you are passing a list of values to a many2one field, that’s why you are getting JSON error.

You have to pass the 'id' of many2one record you want to set there. For Eg: (here amenity_id contains id of wanted record)

self.amenity = amenity_id 


Hope this helps.............

아바타
취소
작성자

Hi! thanks! the thing is that I want the field amenity to contain a list of values, not just one value so the user can chose one of them.

작성자

I see now. I added the code you provided (self.amenity = amenity_id ) inside the foreach. The problem I am having now is that the Many2one field gets all the values, not only the ones I am passing. Is there any way I can delete all the other values? Thanks again!

i have the same issue,Yakito did you get answer ?

베스트 답변

i have resolved the issue 

you can return the domain , hope this can help you 

return {'domain':{'amenity': [('id', 'in', ret_lines)]}} 
아바타
취소
관련 게시물 답글 화면 활동
0
12월 18
13
1
5월 16
4805
1
3월 15
4527
1
9월 23
6989
3
8월 23
7435