Django--省市区三级联动

Django--省市区三级联动,第1张

概述模型类的创建 class Area(models.Model): """ 行政区划 """ # 创建 name 字段, 用户保存名称 nam 模型类的创建
class Area(models.Model):    """    行政区划    """    # 创建 name 字段,用户保存名称    name = models.CharFIEld(max_length=20,verbose_name='名称')     自关联字段 parent     第一个参数是 self : parent关联自己.      on_delete=models.SET_NulL:  如果省删掉了,省内其他的信息为 NulL     related_name='subs': 设置之后     我们就这样调用获取市: area.area_set.all() ==> area.subs.all()    parent = models.ForeignKey('self'models.SET_NulL,related_name='subsTrue,blank=上级行政区划)     Meta:        db_table = tb_areas        verbose_name = 行政区划        verbose_name_plural = '    def __str__(self):        return self.name
自关联字段的外键指向自身,所以ForeignKey('self')需要使用related_name指明查询一个行政区划的所有下级行政区划时,使用哪种语法查询,如本模型类中指明通过Area模型类对象.subs查询所有下属行政区划,而不是使用Django默认的Area模型类对象.area_set语法。请求省份数据请求方式: GET /areas/
from django.vIEws import VIEwfrom areas.models  Areafrom django  http ProvinceAreasVIEw(VIEw):    省级地区"""    def get(self,request):        提供省级地区数据        1.查询省级数据        2.序列化省级数据        3.响应省级数据        4.补充缓存逻辑        """
        # 增加: 判断是否有缓存        province_List = cache.get('province_List')        if not province_List:            try:                province_model_List = Area.objects.filter(parent__isnull=True)                province_List = []                for province_model in province_model_List:                    province_List.append({'ID': province_modelID'name'.name})                # 增加: 缓存省级数据                cacheset('province_List'3600)            except Exception as e:                return http.JsonResponse({'code': 400,'errmsg': '省份数据错误'})        return http.JsonResponse({'code': 0,'errmsg': 'OK','province_List': province_List})
请求市区数据请求方式: GET /areas/(?P<pk>[1-9]\d+)/
 SubareasVIEw(VIEw):    子级地区:市和区县提供市或区地区数据        1.查询市或区数据        2.序列化市或区数据        3.响应市或区数据        4.补充缓存数据        """         判断是否有缓存        sub_data = cache.get(sub_area_' + pk)        if not sub_data:             1.查询市或区数据            try:                sub_model_List = Area.objects.filter(parent=pk)                 查询市或区的父级                parent_model = Area.objects.get(ID=pk)                  2.序列化市或区数据                sub_List = []                for sub_model in sub_model_List:                    sub_List.append({ID': sub_model.ID,name: sub_model.name})                sub_data = {                    ':parent_model.ID, pk                    :parent_model.name,: sub_List                }                 缓存市或区数据                cache.set(' + pk,sub_data,3600)            except Exception as e:                return http.JsonResponse({code': 400errmsg': 城市或区县数据错误})         3.响应市或区数据        : 0,1)">OKsub_data': sub_data})

 

总结

以上是内存溢出为你收集整理的Django--省市区三级联动全部内容,希望文章能够帮你解决Django--省市区三级联动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1213996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存