如何选择框值可以在django中改变

how to select box value can be change in django?

本文关键字:django 改变 何选择 选择      更新时间:2023-09-26

我有两个选择框一个是country,另一个是state。这两个值都可以访问数据库。我已经选择了国家选择框,然后自动更改与该国家选择框相关的另一个选择框值。

示例:我选择国家印度,然后自动获取另一个选择框的值状态。我正在使用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)

你需要使用一点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)创建js脚本,在select change时触发GET请求。

2)在视图中,您传递请求。GET to form,而不是request。邮报》

3)在form init方法中,你更新第二个字段的可能值-参见示例。

4)视图再次返回设置了第一次选择而第二次选择只有选项的页面。