Как передать значение для просмотра из формы - PullRequest
0 голосов
/ 11 июня 2019

Добрый день. Задача: Создайте форму, которая изменит параметры полей модели на основе пользовательского ввода.

Моя логика такова. Я попытался создать форму для внесения изменений: В списках я записал все идентификаторы и имена полей модели;

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 я пытался это сделать - и ее работа.

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 ?

1 Ответ

1 голос
/ 11 июня 2019

Возможно, вы уже поняли это, поскольку вопросы были здесь уже пять часов.

Я не могу точно это проверить, но, похоже, ваша проблема именно здесь.Эта строка говорит об изменении поля change_param_name, а не об изменении поля, соответствующего имени, хранящемуся в change_param_name.

.update(change_param_name=change_value)

. Это можно исправить, поместив значения в словарь.и распаковывая его.

.update(**{change_param_name: change_value})
...