我想有一个选择框(下拉列表) State ,例如:
VIC NSW SA ...然后在我的forms.py中我有一个字段,例如City (这是一个站点名称),例如:
Melbourne Sydney我是Django的新手,所以请记住这一点,抱歉。
我现在没有在一个关键项目或任何事情上工作,只是想学习Django,所以如果我需要创建一个新项目,那就没什么大不了的了。
我猜是某种javascript或者可能需要动态更新City表单字段?
提前致谢。
编辑:我的意思就像一个测试项目,抱歉应该更清楚,这就是我现在所拥有的:
所以例如,如果我选择新南威尔士州,悉尼,那么地址= 10悉尼路(所以我想要Address = "10 Sydney Road"
forms.py:
STATE_CHOICES = ( ('NSW', 'VIC', '...'), ) CITY_CHOICES = ( ('Sydney', 'Melbourne', '...'), )models.py:
state = models.CharField(max_length=200, choices=STATE_CHOICES) city = models.CharField(max_length=200, choices=CITY_CHOICES) address = models.CharField(max_length=200, blank=True)views.py:
@login_required def configs_edit(request, pk): configs = get_object_or_404(Configurations, pk=pk) if request.method == "POST": form = ConfigsForm(request.POST, instance=configs) if form.is_valid(): configs = form.save(commit=False) configs.author = request.user configs.save() return redirect('configs_detail', pk=configs.pk) else: form = ConfigsForm(instance=configs) return render(request, 'blah/configs_edit.html', {'form': form})urls.py:
url(r'^configs/(?P<pk>[0-9]+)/edit/$', views.configs_edit, name='configs_edit'),template:
{% extends "blah/base.html" %} {% block content %} <h1>New Configuration</h1> <form method="POST" class="post-form">{% csrf_token %} {{ form.as_p }} <button type="submit" class="save btn btn-default">Save</button> </form> {% endblock %}I would like to have a select box (drop down list) State that has a few options for example:
VIC NSW SA ...and then in my forms.py I have a field for example City (which is a site name), for example:
Melbourne SydneyI am pretty new to Django so please keep that in mind, sorry.
I am not working on a crucial project or anything at this stage, just trying to learn Django, so if I need to create a new project, no biggie.
I am guessing some sort of javascript or something may be required to update the City form field dynamically?
Thanks in advance.
edit: I meant like a test project sorry should have been clearer, here's what I have at the moment:
So for example, if I select NSW, Sydney, then the Address = 10 Sydney Road (so I would like the field Address = "10 Sydney Road"
forms.py:
STATE_CHOICES = ( ('NSW', 'VIC', '...'), ) CITY_CHOICES = ( ('Sydney', 'Melbourne', '...'), )models.py:
state = models.CharField(max_length=200, choices=STATE_CHOICES) city = models.CharField(max_length=200, choices=CITY_CHOICES) address = models.CharField(max_length=200, blank=True)views.py:
@login_required def configs_edit(request, pk): configs = get_object_or_404(Configurations, pk=pk) if request.method == "POST": form = ConfigsForm(request.POST, instance=configs) if form.is_valid(): configs = form.save(commit=False) configs.author = request.user configs.save() return redirect('configs_detail', pk=configs.pk) else: form = ConfigsForm(instance=configs) return render(request, 'blah/configs_edit.html', {'form': form})urls.py:
url(r'^configs/(?P<pk>[0-9]+)/edit/$', views.configs_edit, name='configs_edit'),template:
{% extends "blah/base.html" %} {% block content %} <h1>New Configuration</h1> <form method="POST" class="post-form">{% csrf_token %} {{ form.as_p }} <button type="submit" class="save btn btn-default">Save</button> </form> {% endblock %}最满意答案
您应该使用JavaScript,请参阅onchange事件。 Rembember仍然需要在服务器端执行验证。
I managed to fix this myself:
I manually populated the form with:
template:
<div> STATE: {{ form.state }} </div> <div> CITY: {{ form.city }} </div> <div> ADDRESS: {{ form.Address }} </div> <script> $(document).ready(function(){ $('#id_state').change(function() { var selected = $(this).val(); if(selected == 'VIC') { $('#id_Address').val('10 Melbourne Street'); # - to fill in more than one field: $('#id_blah').val('other val'); } else if(selected == 'WA') { $('#id_Address').val('10 West Australia Street'); } else if(selected == 'SA') { $('#id_Address').val('10 South Australia Street'); } else if(selected == 'NSW') { $('#id_Address').val('Sydney'); } else if(selected == 'QLD') { $('#id_Address').val('10 Queensland Street'); } }); }); </script>choices.py:
STATE_CHOICES = ( ('NSW', ("NSW")), ('VIC', ("VIC")), ('SA', ("SA")), ('WA', ("WA")), ('QLD', ("QLD")) ) CITY_CHOICES = ( ('Sydney', ("Sydney")), ('Melbourne', ("Melbourne")) )更多推荐
发布评论