flask appbuild 三级联动 行政区划

139 阅读1分钟

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

`

image.png