苏州专业高端网站建设公司,做网站标题代码,django做的网站有哪些,网站怎么优化seo通过自定义Admin的模板文件实现省市区的三级联动.要求创建记录时,根据省市区的顺序选择依次显示对应数据.修改记录时默认显示已存在的数据.Modelclass Member(models.Model):name models.CharField(max_length100, verbose_name姓名)province models.CharField(max_l…通过自定义Admin的模板文件实现省市区的三级联动.要求创建记录时,根据省市区的顺序选择依次显示对应数据.修改记录时默认显示已存在的数据.Modelclass Member(models.Model):name models.CharField(max_length100, verbose_name姓名)province models.CharField(max_length100, nullTrue, blankTrue, verbose_name省份)city models.CharField(max_length100, nullTrue, blankTrue, verbose_name城市)district models.CharField(max_length100, nullTrue, blankTrue, verbose_name区/县)class Meta:verbose_name_plural verbose_name 人员def __str__(self):return self.nameView和url# viewsLOCATION {吉林省: {长春市: [南关区, 朝阳区, 二道区, 绿园区]}}def choose_province(request):province list(LOCATION.keys())return JsonResponse(province, safeFalse)def choose_city(request):province request.GET.get(p)cities list(LOCATION[province].keys())return JsonResponse(cities, safeFalse)def choose_district(request):province request.GET.get(p)city request.GET.get(c)districts LOCATION[province][city]return JsonResponse(districts, safeFalse)# urlsfrom person.views import choose_province, choose_city, choose_districturlpatterns [path(province/, choose_province),path(city/, choose_city),path(district/, choose_district),path(admin/, admin.site.urls),]Adminclass MemberForm(forms.ModelForm):class Meta:widgets {province: forms.Select(),city: forms.Select(),district: forms.Select()}admin.register(Member)class MemberAdmin(admin.ModelAdmin):form MemberFormfields (name, (province, city, district))list_display (name, province, city, district)change_form_template area.html这里需要写一个form将省市区这三个字段显示为单选框.模板文件找到django源码中的change_form.html(django/contrib/admin/templates/admin/)文件,复制到app下templates目录中.在admin中指定自定义的模板文件 change_form_template area.html{% block admin_change_form_document_ready %}src{% static admin/js/change_form.js %}{% if adminform and add %}data-model-name{{ opts.model_name }}{% endif %}(function($) {$(#id_city).change(function() {let p_id $(#id_province).val();let c_id $(#id_city).val();$.get(/district/, {p: p_id, c: c_id }, function(a_info) {var area_info $(#id_district).empty().append( --------- );$.each(a_info, function(i, area) {area_info.append( area )});{% if change %}$(#id_district).find(option:contains({{ original.district }})).attr(selected, true);{% endif %}});});$(#id_province).change(function() {let p_id $(#id_province).val();$.get(/city/, { p: p_id }, function(c_info) {var city_info $(#id_city).empty().append( --------- );$.each(c_info, function(i, city) {city_info.append( city )});{% if change %}$(#id_city).find(option:contains({{ original.city }})).attr(selected, true);$(#id_city).trigger(change);{% endif %}});});$.get(/province/, function(p_info) {var province_info $(#id_province).empty().append( --------- );$.each(p_info, function(i, province) {province_info.append( province )});{% if change %}$(#id_province).find(option:contains({{ original.province }})).attr(selected, true);$(#id_province).trigger(change);{% endif %}});})(django.jQuery);参考: https://www.jb51.net/article/142409.htm以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持我们。本文标题: Django Admin实现三级联动的示例代码(省市区)本文地址: http://www.cppcns.com/jiaoben/python/230841.html