美好的一天。 挑战是: 创建一个表单,该表单将根据用户输入更改模型字段的参数。
我的逻辑是这样。我试图创建一个用于输入更改的表单: 在列表中,我记录了该模型的所有ID和字段名称;
class RefDataForm(forms.Form):
NODE_ID_LIST=[('YE102_4G','YE102_4G'),('AG001_4G','AG001_4G')]
ANRFUNC_PARAM_LIST=[('zzztemporary7','zzztemporary7'),('zzztemporary2','zzztemporary2')]
change_id = forms.CharField(label='Node ID for Change', widget=forms.Select(choices=NODE_ID_LIST))
change_param_name = forms.CharField(label='Parameter name for Change', widget=forms.Select(choices=ANRFUNC_PARAM_LIST))
value = forms.CharField(label='Value')
接下来在view.py中,我试图创建一个应该接受更改的 .update 命令。
def ref_test(request, template_name ='ref_test.html'):
if request.method == 'POST':
test=RefDataForm(request.POST)
if test.is_valid():
change_id = request.POST['change_id']
change_param_name = request.POST['change_param_name']
change_value = request.POST['value']
update_form = Ran4GRfAnrfunction.objects.filter(pk__in=change_id).update(change_param_name=change_value)
else:
test=RefDataForm()
return render(request, template_name, {'test':test})
我的html是:
<form method="post">
{% csrf_token %}
{{ test.change_id }}
{{ test.change_param_name }}
{{ test.value }}
<button type="submit">Search</button>
</form>
但是,我得到一个错误
* Ran4GRfAnrfunction没有名为“ change_param_name”的字段*
如何通过表单传递field_name?
在manage.py shell中,我尝试执行此操作及其工作。
from dumper.models import *
change_id = ['AG001_4G', 'AG002_4G']
change_value = ('Okay')
change_param_name = ('zzztemporary2')
Ran4GRfAnrfunction.objects.filter (pk__in = change_id) .update (zzztemporary2 = change_value)
如何将 change_param_name 的值传递给 .update ?
答案 0 :(得分:1)
自从问题在这里待了五个小时以来,您可能已经知道了。
我无法完全测试此问题,但看来您的问题就在这里。此行告诉它更改change_param_name
字段-不要更改与存储在change_param_name
中的名称匹配的字段。
.update(change_param_name=change_value)
您应该可以通过将值放入字典并解压缩来解决此问题。
.update(**{change_param_name: change_value})