django - 依赖/链式下拉列表在模式下不起作用
问题描述
我试图在 ajax (https://cutt.ly/MyVQE74)的帮助下在 Django 中使用依赖/链式下拉列表,就像如果我选择一家公司,那么只有那个公司部门才会出现在模式中。它在搜索功能的主页上工作,但在发布数据时不能在模式部分工作。
模型部分
class Item(models.Model):
item_name = models.CharField(max_length=255, blank =True)
description = models.CharField(max_length=255, blank=True, null=True)
company = models.ForeignKey(Company, on_delete = models.CASCADE)
department = models.ForeignKey(Department, on_delete = models.CASCADE)
employee = models.ForeignKey(Employee, on_delete = models.CASCADE)
view_part
def save_item_form(request, form, template_name):
data = dict()
if request.method == 'POST':
if form.is_valid():
form.save()
data['form_is_valid'] = True
items = Item.objects.all()
data['html_item_list'] = render_to_string('item/includes/partial_item_list.html', {
'items': items
})
else:
data['form_is_valid'] = False
context = {'form': form}
data['html_form'] = render_to_string(
template_name, context, request=request)
return JsonResponse(data)
def item_create(request):
if request.method == 'POST':
form = ItemForm(request.POST)
else:
form = ItemForm()
return save_item_form(request, form, 'item/includes/partial_item_create.html')
def load_department(request):
company_id = request.GET.get('company')
departments= Department.objects.filter(company_id=company_id).order_by('name')
context={'departments':departments}
return render(request,'item/department_drop_down.html',context)
def load_employees(request):
department_id =request.GET.get('department')
employees = Employee.objects.filter(department_id=department_id).order_by('name')
context={'employees':employees}
return render(request,'item/employee_drop_down.html',context)
模板视图(使用模态):
名称:partial_create_form.html
<form method="post" action="{% url 'item_create' %}" class="js-item-create-form" id="itemForm" data-departments-url="{% url 'ajax_load_departments'%}" data-employees-url="{% url 'ajax_load_employees'%}" >
{% csrf_token %}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">Create a new Item</h4>
</div>
<div class="modal-body">
{% include 'item/includes/partial_item_form.html' %}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Create Item</button>
</div>
</form>
<script>
$(document).on('click', '#id_company', function() {
var url = $("#itemForm").attr("data-departments-url");
var companyId = $(this).val();
console.log(companyId)
$.ajax({
url: url,
data: {
'company': companyId
},
success: function(data) {
$("#id_department").html(data);
}
});
});
$(document).on('click', '#id_department', function() {
var url = $("#itemForm").attr("data-employees-url");
var departmentId = $(this).val();
console.log(departmentId)
$.ajax({
url: url,
data: {
'department': departmentId
},
success: function(data) {
$("#id_employee").html(data);
}
});
});
</script>
-------------------------------------------------- -------------------------------------------------
名称:partial_item_form.html
{% for field in form %}
<div class="form-group{% if field.errors %} has-error{% endif %}">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{% render_field field class="form-control" %}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endfor %}
解决方案
推荐阅读
- reactjs - 反应延迟加载不显示加载并一次显示所有组件
- javascript - Jquery 函数应该适用于子类,而不是适用于所有类
- swift - 如何在 SwiftUI 中实现函数?
- javascript - 使用字典中的值对字符串进行编码
- google-assistant-sdk - 我想在谷歌助手上创建一个动作来使用谷歌主页控制智能灯泡
- tableau-api - Tableau 性别信息图表视觉
- c# - EF Core 2.2 新迁移不断删除和重新创建种子数据
- django-rest-framework - 如何使用 DRF 的 JWT 身份验证对存储在文件中的用户进行身份验证
- azure - 到 S2S 网络的 Azure P2S 客户端流量
- javascript - 如何制作一个 chrome 扩展,其表单即使在关闭/打开扩展后仍保持填充状态?