flask appbuild 三级联动 行政区划
`class RpStaff(Model): tablename = 'rp_staff' table_args = {'comment': '人员信息'} qu = Column(Integer, ForeignKey("rp_manageArea.id"), nullable=False,comment='区') qu_area = relationship('RpManageArea', foreign_keys=qu, uselist=False) xiang = Column(Integer, ForeignKey("rp_manageArea.id"), nullable=False,comment='乡镇') xiang_area = relationship('RpManageArea', foreign_keys=xiang, uselist=False) cun = Column(Integer, ForeignKey("rp_manageArea.id"), nullable=False,comment='村') cun_area = relationship('RpManageArea', foreign_keys=cun, uselist=False)
class RpManageArea(Model):
tablename = 'rp_manageArea'
table_args = {'comment': '管理区域'}
id = Column(Integer, primary_key=True)
code = Column(String(12),comment='行政编码')
name = Column(String(200),comment='名称')
level = Column(String(200), comment='级别')
def repr(self):
return self.name
class ManageAreaView(ModelView):
def jilian(self,id):
"""
"""
code = '110100000000'
if int(id) > 0:
res_code = self.datamodel.session.query(RpManageArea).filter(RpManageArea.id == id).first()
code = res_code.code
code_left = code[0:3]
code_right = code[6:]
if code[-8:] == '00000000':
code_left = code[0:3]
code_right = '000000'
else:
if code[-6:] == '000000':
code_left = code[0:6]
code_right = '000'
else:
if code[-3:] == '000':
code_left = code[0:9]
code_right = ''
base_filters = and_(
RpManageArea.code.like("{}%".format(code_left)),
RpManageArea.code.like("%{}".format(code_right)),
)
result = self.datamodel.session.query(RpManageArea).filter(base_filters).all()
# sql ="select * from rp_manageArea where left(code,3) ='{}' {} {} order by id asc;".format(code_left,level,code_right)
# log.warning("sql===={}".format(sql))
# res = appbuilder.session.execute(sql)
# result = self.datamodel.get_values_json(lst, self.list_columns)
ret_list = list()
for item in result:
ret_list.append({"id": item.id, "code": item.code, "text": str(item.name)})
ret_json = jsonify(ret_list)
response = make_response(ret_json, 200)
response.headers["Content-Type"] = "application/json"
return response
@expose_api(name="read2", url="/api/read2/<id>", methods=["GET"])
@has_access_api
@permission_name("list")
def api_read_2(self, id):
response = self.jilian(id)
return response
`