Как разделить форму ввода для каждой записи в одном шаблоне - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть список записей, которые отображаются на веб-странице.Каждая запись имеет одинаковую форму ввода.Но моя проблема возникает, когда данные вводятся в форму ввода, они появляются на каждом из них.Как мне это изменить.

Каждая форма ввода обрабатывается как одна клонированная сущность, распределенная по множеству записей.

views.py

def theme (request, topic_id, type): #

topic = Topic.objects.get(id = topic_id, type = 't_topic')


entries = topic.entry_set.order_by('-date_added')

images = Image.objects.filter(imgtopic__in = entries)


ArticleFormSet = formset_factory(CheckAnswer, extra = 2)


if request.method == 'POST':

    formset = ArticleFormSet(request.POST) 

    if form.is_valid():

        return HttpResponseRedirect(reverse('learning_logs:index'))
else:

    formset = ArticleFormSet() 




context = {'topic': topic, 'entries': entries, 'images': images, 'formset': formset}
return render(request, 'learning_logs/topic.html', context)

topic.html template

{% load staticfiles%} {% block content%}

{% для записи в записях (n)%}

<div class = 'secondary-container'> 

    <li>


    <div class = 'date'>
        <p >{{ entry.date_added|date:'M d, Y H:i'}}</p>
    </div>




        {%include 'learning_logs/view_files.html'%}


    <div class = 'video-container'>
        {%include 'learning_logs/video.html' %}
    </div>

    <div class = 'entry-text'>
        <p>{{ entry.text|linebreaks }}</p>
        <p>$ {{entry.price_set.get.ptext}}</p>
    </div>

    </li>

    <li> 


        <p> Enter Answer: </p>

        <form action = "{%url 'learning_logs:topic' topic.id topic.type%}" method = 'post'>

            {{formset.management_form}}
            <table> 
                {% for form in formset%}
                        {{form.as_p}}
                        {% csrf_token %}
                        <button name = "submit">Submit answer</button>


                {% endfor %}
            </table>



        </form>





</div>

forms.py

class CheckAnswer (forms.Form):

your_answer = forms.CharField(label = "Enter Your Key", max_length = 100)

def clean(self):

    cleaned_data=super(CheckAnswer, self).clean() 
    your_answer = cleaned_data.get("your_answer")

    try: 

        p = Keys.objects.get(key = your_answer)
    except Keys.DoesNotExist: 

        raise forms.ValidationError("Incorrect code.")

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

Я пытался использовать команду {% for form в formset%} в шаблоне topic.html, чтобы придать каждой записи форму, но я получаю [[данные ManagementForm отсутствуют или были изменены]]когда я нажимаю отправить.

Изображение проблемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...