javascript - Ajax 查询以在 django admin 中获取下拉项目
问题描述
我正在尝试根据课程模型中选择的类别填充一个多对多字段的子类别。这是我之前提出的另一个问题的延续。[https://stackoverflow.com/questions/66673747/selecting-many-to-many-fields-based-on-selected-foreign-key-drop-down-在-django][1]
我已经尝试了下面的表单、视图、url 并添加了一个 js 函数来过滤子类别并将它们填充到表单中。但是我的 js 函数不起作用。请让我知道我要去哪里拧。
#forms.py
class CoursesForm(forms.ModelForm):
subcategory = forms.ModelMultipleChoiceField(queryset=Subjectsubcategories.objects.none())
# subcategory = [(c.color, c.color) for c in Subjectsubcategories.objects.filter(category= self.category)]
class Meta:
model= Courses
fields='__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['subcategory'].queryset = Subjectsubcategories.objects.none()
if 'category' in self.data:
try:
category_id = int(self.data.get('category'))
self.fields['subcategory'].queryset = Subjectsubcategories.objects.filter(category=category_id)
except (ValueError, TypeError):
pass
elif self.instance.pk:
self.fields['subcategory'].queryset = self.instance.category.subcategory_set.order_by('subcategoryname')
#views.py
def get_subcategories(request):
#sub_dict={}
if request.is_ajax() and request.method=='POST':
category_id= request.GET.get('category')
print(category_id)
# category= Subjectcategories.objects.get(id=category_id).first()
subcategories= Subjectsubcategories.objects.filter(category=category_id)
return JsonResponse({'subcategory':subcategories})
#urls.py
urlpatterns = [
url(r'^ajax_get_subcategories/$', views.get_subcategories, name='ajax_get_subcategories'),
]
#sub_cats.js
(function($) {
$(function() {
$('#id_category').change(function(e){
alert("test")
e.preventDefault();
var category = $(this).serialize()
$.ajax({
type : 'POST',
url : "{% url 'ajax_get_subcategories' %}",
data : {
'category_id': category,
},
success : function(data){
$("#id_subcategory").html(`<tr> </tr>`)},
error : function(response){
alert(response["responseJSON"]["error"]);
}
});
});
});
})(django.jQuery);
#admin
class Media:
js= ('admin/js/jquery-3.5.1.min.js','admin/sub_cats.js')
解决方案
推荐阅读
- java - 如何在while循环中用另一个变量的值替换变量的值
- javascript - OPTIONS 404 on Vue.js file upload
- zabbix - Zabbix HTTP 代理 0 然后连接失败
- docker - 在 windows docker 容器中运行 exe
- android - android中的onBackPressed更改选项卡
- android - 访问被拒绝无法从 aws s3 下载图像
- ruby-on-rails - 在 Rails 5 上检索请求标头的正确方法是什么?
- splunk - SplunkUF 不转发来自 Kubernetes 容器的日志
- firebase - 使用 Firebase 和 React Native 管理两个数据库
- node.js - 并行执行 AoG 意图