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

Hi,

I have three fields in three different classes which are related in a chain: District, Sub District, Area

Area is linked to Sub District, Sub District is Linked to District.

class sna_district(osv.osv): _name="sna.district" _description="Define districts" _columns={ 'name':fields.char('District Name',size=64,required=True) }

class sna_sub_district(osv.osv): _name="sna.sub.district" _description="Define sub districts" _columns={ 'name':fields.char('Sub District Name',size=64,required=True), 'sub_district_id': fields.many2one('sna.district','District Name',select=True,required=True,ondelete="restrict") }

class sna_area(osv.osv): _name="sna.area" _description="Define areas" _columns={ 'name':fields.char('Area Name',size=64,required=True),
'area_type': fields.selection(area_type_lov,'Area Type',required=True), 'sub_district_id':fields.many2one('sna.sub.district','Sub District Name',size=64,required=True), 'district_id':fields.related('sub_district_id','sub_district_id',readonly=True,type='many2one',relation='sna.district',string='District Name'),
}

Above three are working fine.

In another class, user need to specify all three fields, user selects the 'District' in the first field, based on the 'District' selected, system should display the related 'Sub Districts' only in the second field (the ones which are linked to selected 'District'), based on the 'Sub District' selected by the user (from filtered list), system should display the related 'Area' only in the third field (the ones which are linked to selected 'Sub District').

Below is what I am trying but it looks wrong and therefore not working:

class sna_aor_super(osv.osv): _name="sna.aor.super" _description="Area of Registration Super" _columns={ 'district_id': fields.many2one('sna.district','District',select=True,required=True,ondelete="restrict"), 'sub_district_id':fields.related('district_id','district_id',readonly=True,type='many2one',relation='sna.sub.district',string='Sub District'), 'area_id':fields.related('sub_district_id','sub_district_id',readonly=True,type='many2one',relation='sna.area',string='Area'), }

Help will be much appreciated.

Thanks

아바타
취소
베스트 답변

Hi Khalid,

If you want to apply that kind of filtering you should use domains on fields instead of using related fields

class sna_aor_super(orm.Model): 
    _name = "sna.aor.super" 
    _description = "Area of Registration Super"
    _columns = { 
        'district_id' : fields.many2one('sna.district','District', select=True, required=True, ondelete="restrict"), 
        'sub_district_id' : fields.many2one('sna.sub.district', 'Sub District', domain="[('sub_district_id', '=', district_id)]", select=True, required=True),
        'area_id' : fields.many2one('sna.area', 'Area', domain="[('sub_district_id', '=', sub_district_id)]", select=True, required=True),
    }

Regards, Petar

아바타
취소
작성자

Thank you for the help. Much appreciated.

You are very welcome Khalid :)

관련 게시물 답글 화면 활동
0
7월 15
3802
1
10월 21
3781
0
1월 17
8202
1
10월 15
4442
1
3월 15
7000