我是django和jquery的新手。我正在开发一个基于django的应用程序,其中有3个下拉列表。1.校园2.学校3.中心
层次结构是:校园有学校,学校有中心。我想链接这些下拉菜单。
例如,我有3个校园,例如Campus1,Campus2,Campus3。如果选择“校园1”,则应该只选择“校园1”中的学校并继续执行此操作;如果选择“学校1”,则需要能够选择“学校1”的中心,并且所有其他选项都应隐藏。
我在网上搜索并尝试了此http://blog.devinterface.com/2011/02/how-to-implement-two-dropdowns-dependent-on-each-other-using-django-and-jquery/, 但是似乎不适合我。我还检查了此http://www.javascriptkit.com/script/script2/triplecombo.shtml, 但是由于我使用ModelForm创建表单,因此这不符合我的需求。
请指导我这样做。
你可能需要使用以下技术:
型号
from django.db import models
class Campus(models.Model):
name = models.CharField(max_length=100, choices=choices.CAMPUSES)
def __unicode__(self):
return u'%s' % self.name
class School(models.Model):
name = models.CharField(max_length=100)
campus = models.ForeignKey(Campus)
def __unicode__(self):
return u'%s' % self.name
class Centre(models.Model):
name = models.CharField(max_length=100)
school = models.ForeignKey(School)
def __unicode__(self):
return u'%s' % self.name
Forms.py
import models
from django import forms
class CenterForm(forms.ModelForm):
campus = forms.ModelChoiceField(queryset=models.Campus.objects.all())
school = forms.ModelChoiceField(queryset=models.School.objects.none()) # Need to populate this using jquery
centre = forms.ModelChoiceField(queryset=models.Centre.objects.none()) # Need to populate this using jquery
class Meta:
model = models.Center
fields = ('campus', 'school', 'centre')
现在,在你的视图中编写一个方法,该方法为校园下的学校和学校下的中心返回json对象:
Views.py
import models
import simplejson
from django.http import HttpResponse
def get_schools(request, campus_id):
campus = models.Campus.objects.get(pk=campus_id)
schools = models.School.objects.filter(campus=campus)
school_dict = {}
for school in schools:
school_dict[school.id] = school.name
return HttpResponse(simplejson.dumps(school_dict), mimetype="application/json")
def get_centres(request, school_id):
school = models.School.objects.get(pk=school_id)
centres = models.Centre.objects.filter(school=school)
centre_dict = {}
for centre in centres:
centre_dict[centre.id] = centre.name
return HttpResponse(simplejson.dumps(centre_dict), mimetype="application/json")
现在编写一个ajax / jquery方法来获取数据并填充selectHTML中的元素。
AJAX / jQuery
$(document).ready(function(){
$('select[name=campus]').change(function(){
campus_id = $(this).val();
request_url = '/get_schools/' + campus_id + '/';
$.ajax({
url: request_url,
success: function(data){
$.each(data, function(index, text){
$('select[name=school]').append(
$('<option></option>').val(index).html(text)
);
});
}
});
return false;
})
});
我有两个下拉菜单,我想检索它的值,将它们用作变量,以过滤从内部Web API检索到的数据。 意见。派克 我没有使用Django表单,因为我没有保存年份以外的任何其他数据,我正在生成周数,但是,如果你认为使用Django表单来促进数据处理可能是有用的,那么写下你的观点,我想让这个网络应用更好。 标题。html 警告:我担心生成周数的代码是完全错误的,因为它不是正确的解决方案,我已经阅读了以下文章Dj
问题内容: 我想知道是否有可能让jQuery 在下拉框中选择,例如第4个项目? 我希望用户单击一个链接,然后让该框更改其值,就像用户通过单击来选择它一样。 问题答案: 怎么样 对于现代版本的jquery,应使用代替
下拉菜单仅在鼠标悬停时出现。 我在网上尝试了很多解决方案,但运气不好: https://qaquestions.wordpress.com/2012/03/05/selenium-web-driver-some-tricks-using-python/ Selenium无法通过xpath找到option表单元素 使用selenium python从下拉选项中选择值 他们中的大多数假设标签名称是“选
问题内容: 我在登录用户和Django时遇到问题。我有一个名为的类,该类具有to 和与该动物有关的一些数据,例如年龄,种族等。 用户可以将动物添加到数据库,并且我必须跟踪每个动物的作者,因此我需要添加在用户创建动物实例时记录的request.user。 models.py 主要目标是隐藏表单中的发布者字段,并在单击保存按钮时提交登录的用户。 我可以使用来在视图中捕获当前用户initial,但是我也
我用所选值填充下拉列表,如下所示, 要访问所选选项im,请使用: 这里myOption返回“three”作为值。我如何得到值,即“3”,而不是文本?
问题内容: 我正在尝试使用ModelForm添加数据。它工作正常,除了ForeignKey下拉列表显示所有值,我只希望它显示与已登录用户相关的值。 这是我要添加的记录ExcludedDate的模型: 这是类别的模型,该表是包含我想由用户限制的关系的表: 最后,表单代码: 如何获取仅显示类别子集的表单,其中category.user等于登录用户? 问题答案: 您可以在 init中* 自定义表格 *