DjangoAdmin管理后台详解17(转)-表单⼆级联动
思路
通过⾃定义插件引⼊⾃⼰的 js ⽂件,在js⽂件中请求数据,修改表单值
1. ⾃定义插件:
admin.py
class ProductPlugin(BaseAdminPlugin):
def init_request(self, *args, **kwargs):
path = _full_path()
# 只在添加或修改时启动插件
if 'products/add' in path or 'products/update' in path:
return Truedjango admin 自定义页面
return False
def get_media(self, media):
# 引⼊⾃定义的js⽂件,列表中可以添加多个资源⽂件,⼀般是js和css
media._js_lists.append(['/static/product/admin.js'])
return media
# 注册插件
2. views.py中定义获取产品属性的接⼝
def ProductAttrsList(request, cid):
if not cid:
return JsonResponse([])
attrs = ProductAttr.objects.filter(category_id=cid).values()
print(attrs)
return JsonResponse(list(attrs), safe=False)
3. urls.py中添加路由
urlpatterns = [
path('attrs/<int:cid>/', ProductAttrsList, name='attrslist'),
]
4. js ⽂件 /static/products/admin.js
$('#id_category').change(function(){
var cid = $(this).val();
console.log('/products/attrs/' + cid + '/');
$.get('/products/attrs/' + cid + '/', function(res){
console.log(res);
var html = '';
res.forEach(function(item, index){
html += '<option value="'+ item.id +'">'+ item.name +'</option>'            })
$('#id_product_attr_form').html(html);
})
})
5. 运⾏看效果

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。