Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery在django中实现相互依赖下拉菜单的最简单方法_Jquery_Python_Django - Fatal编程技术网

使用jQuery在django中实现相互依赖下拉菜单的最简单方法

使用jQuery在django中实现相互依赖下拉菜单的最简单方法,jquery,python,django,Jquery,Python,Django,有谁能给出如何使用jQuery在django中实现相互依赖的下拉菜单的基本示例吗? 我试过了,但只有一个下拉菜单 Models.py def get_photo_storage_path(photo_obj, filename): random_string = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(10)) storage_path = 'img/pro

有谁能给出如何使用jQuery在django中实现相互依赖的下拉菜单的基本示例吗? 我试过了,但只有一个下拉菜单

Models.py

def get_photo_storage_path(photo_obj, filename):     
    random_string = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(10))
    storage_path = 'img/profile/' + random_string + '_' + filename
    return storage_path  

class CompanyMake(models.Model):
    company_name = models.CharField(max_length = 100)
    def __unicode__(self):
        return self.company_name

class MakeModel(models.Model):
    company = models.ForeignKey(CompanyMake)
    model_name = models.CharField(max_length = 100)
    def __unicode__(self):
        return self.model_name

class ModelParts(models.Model):
    company = models.ForeignKey(CompanyMake)
    model = models.ForeignKey(MakeModel)
    part_name = models.CharField(max_length = 100)
    def __unicode__(self):
        return self.part_name

class ModelYear(models.Model):
    company = models.ForeignKey(CompanyMake)
    model = models.ForeignKey(MakeModel)
    year_value = models.IntegerField()


class UserProfile(models.Model):
    user = models.OneToOneField(User,primary_key=True)   
    #image = models.ImageField(upload_to=get_photo_storage_path, null = True, blank=True)
    part = models.ForeignKey(ModelParts,null = True, blank=True) 
    phone_number = models.CharField( max_length = 10,verbose_name="Mobile Number 10 digits",null = True, blank=True, default=None)
views.py是

def home(request):
    cm = CompanyMake.objects.all()
    for a in cm:
        print a
        mm = a.makemodel_set.all()
        for b in mm:
            print b
            mp = b.modelparts_set.all()
            for c in mp:
                print c
                my = ModelYear.objects.all()
                print my

        return render(request,'choice.html',{'cm':cm,'mm':mm, 'mp':mp, 'my':my})
forms.py是

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        exclude=('user')
choice.html是

<select name="car">
    {% for car in cm %}

            <option value="{{car.key}}" selected="selected">{{car.company_name}}</option>

    {% endfor %}
</select>

        <br/>

            <select name="car">
    {% for model in mm %}
            <option value="{{model.key}}" selected="selected">{{model.model_name}}</option>
            {% endfor %}
</select>

{cm%中的汽车为%1}
{{car.company{u name}}
{%endfor%}

{mm%中模型的%s} {{model.model_name} {%endfor%}

在这里,我试图获得汽车模型和零件的相互依赖的下拉列表。

最简单的方法是通过第一个下拉菜单的更改事件的ajax调用

将您的choice.html更改为:

<select id = "selectbox1">
  <option>Please Select Car Company</option>
  {% for car in cm %}
    <option value = "{{car.id}}"> {{car.company_name}} </option>
  {% endfor %}
</select>

<select id = "selectbox2">
  <option>Select Car Company First</option>
</select>
现在,服务器端:

在URL.py中:

url(r'fetch_options2/([0-9]+)$', 'fetch_options2', name='fetch_options2'),
在views.py中:

def fetch_options2(request, car_company_id):
   opt2_html = ""
   try:
     company = CompanyMake.objects.get(pk = car_company_id)
     make_models  = company.makemodel_set.all()
     for model in make_models:
       opt2_html += "<option value='"+str(model.id)+"'>"+model.model_name+"</option>"
   except:
     write_exception("Error in fetching options 2")
   return HttpResponse(opt2_html)
def取车选项2(请求、汽车公司id):
opt2_html=“”
尝试:
company=CompanyMake.objects.get(pk=car\u company\u id)
make\u models=company.makemodel\u set.all()
对于make_模型中的模型:
opt2_html+=“”+模型。模型_名称+“”
除:
写入异常(“获取选项2时出错”)
返回HttpResponse(opt2_html)

就这样。如果您遇到任何问题,请告诉我

您的意思是,第二个选择框的选项取决于第一个选择框的选定值?是的,您是对的。汽车公司有汽车模型,汽车模型有特定的零件。因此,当我选择任何一辆车,然后在下一个下拉菜单中,只有与该车相关的车型才可用。零件也一样。
def fetch_options2(request, car_company_id):
   opt2_html = ""
   try:
     company = CompanyMake.objects.get(pk = car_company_id)
     make_models  = company.makemodel_set.all()
     for model in make_models:
       opt2_html += "<option value='"+str(model.id)+"'>"+model.model_name+"</option>"
   except:
     write_exception("Error in fetching options 2")
   return HttpResponse(opt2_html)