Django:如果从选择框中选择了一个值,则填充表单字段(Django: if a value is selected from select box, populate form field)

编程入门 行业动态 更新时间:2024-10-24 20:14:11
Django:如果从选择框中选择了一个值,则填充表单字段(Django: if a value is selected from select box, populate form field)

我想有一个选择框(下拉列表) 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 Sydney

I 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")) )

更多推荐

本文发布于:2023-07-19 09:14:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1176938.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字段   表单   框中   选择了   Django

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!