Не удается получить доступ к значениям формы с представлением Python в Django - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь получить доступ к значениям формы из формы, которая динамически заполняет количество полей ввода из запроса к базе данных, но я не могу получить значения.

def count_add(request):

    items = Item.objects.filter(username=request.user)

    if request.method == 'POST':
        form = CountAddForm(request.POST)

        for item in items:
            print(request.POST[item])
            # if request.POST[item] != None:
            #     print(item)
            #     rating = form.save(commit=False)
            #     rating.username = request.user
            #     rating.item = item
            #     rating.date = datetime.now()
            #     rating.rating = request.POST[item]
            #     rating.save
            #     form = CountAddForm()

    return render(request, 'count_add.html', {'items': items})
<div class="container">
    <div class="row">
        <div class="col s12 opacity">
            <h4 class="card-title center-align white-text">Rate Your Items Below</h4>
            <form method="POST" class="center-align white-text"> {% csrf_token %}

                <ul class="center-align white-text">
                    {% for item in items %}
                    <li class="input-field col s12">
                        <select name="{{ item }}" class="browser-default">
                            <option value="" disabled selected>{{ item }}</option>
                            <option value="1">1</option>
                            <option value="2">2</option>
                            <option value="3">3</option>
                            <option value="4">4</option>
                            <option value="5">5</option>
                            <option value="6">6</option>
                            <option value="7">7</option>
                            <option value="8">8</option>
                            <option value="9">9</option>
                            <option value="10">10</option>
                        </select>
                    </li>
                    {% endfor %}

Мое желание - вернуть значение из полей ввода и сохранить их в базе данных.Я получаю None обратно, когда я действительно получаю значение в настоящее время.

РЕДАКТИРОВАТЬ: я пытался использовать is_valid и cleaned_data [item], но кажется, что форма никогда не проверяется.

1 Ответ

0 голосов
/ 02 мая 2019

Звоните is_valid, затем используйте cleaned_data:

def count_add(request):
    ...
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = CountAddForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required

https://docs.djangoproject.com/en/2.2/topics/forms/#the-view

...