DJANGO后台ADMIN下拉三级联动,纯JS,没有AJAX数据库回显,目前为止最简单的做法

网上有很多的DJANGO下拉三级联动,但是都涉及到数据库回显数据操作,操作复杂,本例子是把下拉数据写在JS中,很简单,不需要修改后台太多文件,最下面是一个正常的HTML下拉三级联动文件,我们在这个文件的基础之上,把它修改放到DJANGO后台之中去,步骤如下

1.建立一个APP,例如news

2.news文件夹下面models里面建立class article,内容如下

 

class Article(models.Model):
    name = models.CharField('标题', max_length=256)
    country = models.CharField('国家', max_length=256)
    province = models.CharField('省份', max_length=256)
    city = models.CharField('城市', max_length=256)		

代码没有写全,只摘要重要部分,其它通用部分没有写

3、news文件夹下admin文件内容如下

from django.contrib import admin
from .models import Article
from django import forms

class ArticleForm(forms.ModelForm):
    class Meta:
        widgets = {
            'country': forms.Select(),		
            'province': forms.Select(),
            'city': forms.Select(),		
        }
 
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    form = ArticleForm
    fields = ('name',('country','province','city'))
    list_display = ('name','country','province','city')

4、templates\admin\news\article文件夹下有个文件,change_form.html,把这个文件打开,加入下面的JS代码,变成如下

{% block admin_change_form_document_ready %}
    <script type="text/javascript"
            id="django-admin-form-add-constants"
            src="{% static 'admin/js/change_form.js
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三级联动下拉菜单通常用于根据用户选择的前两个选项,动态加载第三个选项的内容。在 Django 中,可以通过 AJAX 请求来实现这个功能。 下面是一个简单的示例,假设你要实现一个三级联动的省市县选择: 首先,在 Django 中定义三个模型,分别表示省、市和县: ```python class Province(models.Model): name = models.CharField(max_length=50) class City(models.Model): name = models.CharField(max_length=50) province = models.ForeignKey(Province, on_delete=models.CASCADE) class County(models.Model): name = models.CharField(max_length=50) city = models.ForeignKey(City, on_delete=models.CASCADE) ``` 然后,在视图中定义三个函数,分别用于返回省、市和县的数据: ```python from django.http import JsonResponse def get_provinces(request): provinces = Province.objects.all() data = [{'id': p.id, 'name': p.name} for p in provinces] return JsonResponse({'data': data}) def get_cities(request, province_id): cities = City.objects.filter(province_id=province_id) data = [{'id': c.id, 'name': c.name} for c in cities] return JsonResponse({'data': data}) def get_counties(request, city_id): counties = County.objects.filter(city_id=city_id) data = [{'id': c.id, 'name': c.name} for c in counties] return JsonResponse({'data': data}) ``` 这三个函数都返回一个 JSON 格式的数据,其中包含了对应模型的 id 和 name 字段。 最后,在模板中使用 AJAX 请求来动态加载下拉菜单的选项。下面是一个简单的示例: ```html <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function() { $('#province').change(function() { var province_id = $(this).val(); if (province_id) { $.ajax({ url: '/get_cities/' + province_id, success: function(data) { var options = '<option value="">选择城市</option>'; for (var i = 0; i < data.data.length; i++) { options += '<option value="' + data.data[i].id + '">' + data.data[i].name + '</option>'; } $('#city').html(options); $('#county').html('<option value="">选择县区</option>'); } }); } else { $('#city').html('<option value="">选择城市</option>'); $('#county').html('<option value="">选择县区</option>'); } }); $('#city').change(function() { var city_id = $(this).val(); if (city_id) { $.ajax({ url: '/get_counties/' + city_id, success: function(data) { var options = '<option value="">选择县区</option>'; for (var i = 0; i < data.data.length; i++) { options += '<option value="' + data.data[i].id + '">' + data.data[i].name + '</option>'; } $('#county').html(options); } }); } else { $('#county').html('<option value="">选择县区</option>'); } }); $.ajax({ url: '/get_provinces/', success: function(data) { var options = '<option value="">选择省份</option>'; for (var i = 0; i < data.data.length; i++) { options += '<option value="' + data.data[i].id + '">' + data.data[i].name + '</option>'; } $('#province').html(options); $('#city').html('<option value="">选择城市</option>'); $('#county').html('<option value="">选择县区</option>'); } }); }); </script> <select name="province" id="province"></select> <select name="city" id="city"></select> <select name="county" id="county"></select> ``` 在这个例子中,我们使用了 jQuery 来发送 AJAX 请求,并动态更新下拉菜单的选项。当用户选择省份时,我们发送一个请求来获取对应的城市数据,并生成 city 下拉菜单的选项。当用户选择城市时,我们发送另一个请求来获取对应的县区数据,并生成 county 下拉菜单的选项。 最后,我们在页面加载完成后,发送一个请求来获取省份数据,并生成 province 下拉菜单的选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值