我有两个选择框1是country
,另一个是state
。这两个值都可以访问数据库。我选择了国家/地区选择框,然后自动选择与该国家/地区选择框相关的另一个选择框值。
示例:我选择了country india,然后自动获取另一个选择框的值状态。我正在使用ajax获取值。
def constituency1(request):
country= Loksabha.objects.values('country_name').distinct('country_name')
terms = Loksabha.objects.values('lok_sabha').distinct('lok_sabha')
states=Loksabha.objects.values('state_name').distinct('state_name')
if 'p1' in request.GET and request.GET['p1']:
p1 = request.GET['p1']
states=Loksabha.objects.values('state_name').distinct('state_name').filter(country_name='p1')
if 'p2' in request.GET and request.GET['p2']:
p2 = request.GET['p2']
state_filter = Loksabha.objects.filter(state_name=p1,constituency_name=p2)
答案 0 :(得分:2)
你需要使用一点点AJAX / JQuery。
#models.py
class Country(models.Model):
country = models.CharField(max_length=20)
class State(models.Model):
state = models.Charfield(max_length=20)
country = models.ForeignKey(state)
#views.py
def filter (request):
try:
kwargs = {smart_str('country'): request.GET['q']}
except KeyError:
raise Http404
qs = State.objects.filter(**kwargs).values('pk', 'name')
response = HttpResponse(
content=dumps(list(qs)),
mimetype='application/json'
)
return response
#urls.py
urlpatterns = patterns('',
url(r'^locations/filter/state-by-country/$', 'filter', name='state_filter')
...
)
将此添加到您的模板
//JQuery chained select plugin
$(function() {
$('#id_state').chainedSelect({
parent: '#id_country',
url: 'locations/filter/find-by-country',
value: 'id',
label: 'name'
});
});
答案 1 :(得分:0)
这个问题已被问过好几次了。
这里有一个例子: Conditional field in form
我这样做了: 1)创建js脚本,触发在选择更改时形成GET请求。
2)在视图中,您将request.GET传递给form,而不是request.POST
3)在表单init方法中,您更新第二个字段的可能值 - 请参阅示例。
4)视图再次返回页面,其中第一个选择被设置,第二个选择只有选项,第一个选择允许。