如何在Django中获取请求中的选项字段值?

2024-09-30 20:33:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试更新我的foem,我在下拉列表中有Country值,我想在请求中获取该值,以便我可以在request中使用该值更新我的表单,请检查我的代码并让我知道我错在哪里

这是我的test.html文件

<select name='country'>
  <option>Select One</option>
   {% for countries in country %}
  <option value="{{country.id}}" {% if countries.id == datas.country_id %}selected{% endif 
   %}>{{countries.country}}</option>
  {% endfor %}
</select>

这是我的views.py文件

datas = MyModelName.objects.get(pk=id)
  if request.method == "POST"
    datas.country = request.POST.get('country')
    datas.save()

这不是选择国家,而是给我错误,请指导我如何解决这个问题


Tags: 文件id表单列表getifrequestpost
1条回答
网友
1楼 · 发布于 2024-09-30 20:33:39

您最好使用ModelForm来编辑模型中的数据,它允许您以更干净的方式检查所有输入的值

创建ModelForm以编辑数据

class MyModelNameEditForm(forms.ModelForm):
    class Meta:
        model = MyModelName

然后在your views.py中可以执行以下操作:

datas = MyModelName.objects.get(pk=id)
if request.POST:
    edit_form = MyModelNameEditForm(request.POST, instance=datas)
    if edit_form.is_valid(): 
        edit_form.check()
else:
    edit_form = MyModelNameEditForm(instance=datas)

# don't forget to send your form as a parameter to your template
return render(request, "path_to_template/test.html", {'edit_form': edit_form})

然后在test.html中,您可以替换:

<select name='country'>
  <option>Select One</option>
   {% for countries in country %}
  <option value="{{country.id}}" {% if countries.id == datas.country_id %}selected{% endif 
   %}>{{countries.country}}</option>
  {% endfor %}
</select>

一行

{{ edit_form.country }}

您可以在官方文件https://docs.djangoproject.com/en/3.1/topics/forms/modelforms/#modelform中阅读有关ModelForm的更多信息

相关问题 更多 >