Python 无法实现相关下拉列表

Python 无法实现相关下拉列表,python,jquery,html,django,django-forms,Python,Jquery,Html,Django,Django Forms,我一直在尝试在我的表单中实现依赖下拉列表,但由于我对jquery了解不多,我一直无法正确实现它,但我认为我做错了什么。如果有人能帮我,我会非常感激。 问题在于选择fl no字段时,park_bay不会得到更新 下面是维托·弗雷塔斯写的帖子,可以在这里找到 名为postlog的应用程序的models.py: from django.db import models class flight(models.Model): fl_no =models.CharField(max_length=

我一直在尝试在我的表单中实现依赖下拉列表,但由于我对jquery了解不多,我一直无法正确实现它,但我认为我做错了什么。如果有人能帮我,我会非常感激。 问题在于选择fl no字段时,park_bay不会得到更新

下面是维托·弗雷塔斯写的帖子,可以在这里找到

名为postlog的应用程序的models.py:

from django.db import models
class flight(models.Model):
    fl_no =models.CharField(max_length=6,primary_key=True)
    inbound= models.CharField(max_length=15,blank=True)
    dest= models.CharField(max_length=15,blank=True)
    park_bay= models.CharField(max_length=3)
    airline= models.CharField(max_length=15)
    dep_time= models.TimeField()
    arr_time= models.TimeField()

    def __str__(self):
        return self.fl_no
下表为另一个应用程序

名为status的应用程序的models.py:

from django.db import models
from postlog.models import flight

# Create your models here.
class FlightStatus(models.Model):
    Yes = 1
    No = 2
    CLEANING_CHOICES = (
        (Yes, 'Yes'),
        (No,'No'),
    )
    fl_no= models.ForeignKey(flight,on_delete=models.CASCADE,related_name='fli_no')
    park_bay= models.ForeignKey(flight,on_delete=models.CASCADE,related_name='parki_bay')
    catering= models.CharField(max_length=9)
    fuel= models.IntegerField()
    pas_cnt= models.IntegerField()
    dest= models.ForeignKey(flight,on_delete=models.CASCADE,related_name='desti')
    dep_time=models.ForeignKey(flight,on_delete=models.CASCADE,related_name='dept_time')
    Cleaning = models.PositiveSmallIntegerField(choices=CLEANING_CHOICES)

    def __str__(self):
        return self.fl_no
状态应用程序中的views.py:

from django.shortcuts import render,redirect
from django.views.generic.base import TemplateView
from status.forms import StatusForm
from status.models import FlightStatus
from postlog.models import flight
from django.views.generic import ListView, CreateView, UpdateView
from django.urls import reverse_lazy
# Create your views here.
class StatusPageView(CreateView):

    template_name = "status/home.html"
    model = FlightStatus
    form_class = StatusForm
    success_url = reverse_lazy('status') 

def load_park_bay(request):
    flight_id = request.GET.get('fl_no')
    park = flight.objects.filter(flight_id=flight_id).order_by('park_bay')
    return render(request, 'status/park_bay_dropdown.html', {'park':park})
from django.urls import path,include
from . import views
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from status.views import StatusPageView

urlpatterns = [
    path('', views.StatusPageView.as_view(), name='status'),
    path('ajax/load-park/', views.load_park_bay, name='ajax_load_park'),
]
状态应用程序中的URL.py:

from django.shortcuts import render,redirect
from django.views.generic.base import TemplateView
from status.forms import StatusForm
from status.models import FlightStatus
from postlog.models import flight
from django.views.generic import ListView, CreateView, UpdateView
from django.urls import reverse_lazy
# Create your views here.
class StatusPageView(CreateView):

    template_name = "status/home.html"
    model = FlightStatus
    form_class = StatusForm
    success_url = reverse_lazy('status') 

def load_park_bay(request):
    flight_id = request.GET.get('fl_no')
    park = flight.objects.filter(flight_id=flight_id).order_by('park_bay')
    return render(request, 'status/park_bay_dropdown.html', {'park':park})
from django.urls import path,include
from . import views
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from status.views import StatusPageView

urlpatterns = [
    path('', views.StatusPageView.as_view(), name='status'),
    path('ajax/load-park/', views.load_park_bay, name='ajax_load_park'),
]
home.html:

{% extends 'base_template1.html' %}
{% load crispy_forms_tags %}
{% block content %}
<button type="button" class="butra button1ra" data-toggle="modal" data-target="#Add_Modal">Add Flight Status</button>
<!-- Adding a Flight Status -->

<div class="modal fade" id="Add_Modal" tabindex="-1" role="dialog" aria-labelledby="Add_ModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="AddModalLabel">Flight Details</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <form method="post">
            {% csrf_token %}
            {{ form|crispy }}
        </form>
      </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Add Details</button>
      </div>
    </div>
  </div>
</div>
  <script>
    $("#id_fl_no").change(function () {
      var url = $("#StatusForm").attr("data-park-url");  
      var flnoId = $(this).val();  
      $.ajax({                       
        url: url,                    
        data: {
          'fl_no': flnoId       
        },
        success: function (data) {   
          $("#id_park_bay").html(data);  
        }
      });

    });
  </script>
{%extends'base_template1.html%}
{%load crispy_forms_tags%}
{%block content%}
添加航班状态
航班详情
&时代;
{%csrf_令牌%}
{{form | crispy}}
接近
添加详细信息
$(“#id#fl#U编号”)。更改(功能(){
var url=$(“#StatusForm”).attr(“数据园区url”);
var flnoId=$(this.val();
$.ajax({
url:url,
数据:{
“fl_no”:flnoId
},
成功:函数(数据){
$(“id#u park_bay”).html(数据);
}
});
});
和park_bay_dropdown.html:

<option value="">---------</option>
{% for parks in park %}
<option value="{{ parks.pk }}">{{ parks.park_bay }}</option>
{% endfor %}
---------
{%用于公园%中的公园}
{{parks.park_bay}
{%endfor%}
我试图实现的是,在选择fl no值时,其他下拉列表必须仅显示与fl no相关的属性


假设我的飞行表中有两条记录。比如EK565和EK545。选择EK565后,我希望其他下拉列表显示与EK565相关的值。

是否在“#id_fl no”和“#id_park bay”中缺少下划线?是否已更新代码?这些是表单上字段的id吗?您必须将教程中的代码改编为您的代码。我已经尝试过这样做,但我不确定哪里出了问题