Nano Hash - криптовалюты, майнинг, программирование

Django формирует повторяющиеся значения

Я динамически создаю больше форм в шаблонах Django с помощью jQuery.formsets. Проблема в том, что я получаю повторяющиеся значения, введенные в базу данных.

Насколько я могу судить, идентификаторы, сгенерированные jQuery.formsets, верны, потому что, когда я распечатываю request.POST в представлениях, он отображает правильные значения.

Речь идет о значениях «Наблюдатель ОДИН/ДВА/ТРИ» со следующими идентификаторами перед нажатием кнопки «Отправить»:

  • id_form-0-observed_by_0
  • форма-1-id_form-0-observed_by_0
  • форма-2-id_form-0-observed_by_0

запрос.POST:

<QueryDict: {u'form-1-form-INITIAL_FORMS': [u''], u'form-1-form-MAX_NUM_FORMS': [u''], u'commune': [u'Tartu'], u'additional_workgroups_view_0': [u''], u'form-0-observed_by_1': [u'3'], u'form-0-observed_by_0': [u'Observer ONE'], u'sample': [u''], u'remarks': [u''], u'access_edit': [u'private'], u'district': [u'Tartu'], u'country_1': [u'EE'], u'access_view': [u'public'], u'form-2-form-MAX_NUM_FORMS': [u''], u'substrate_1': [u''], u'substrate_0': [u''], u'geom': [u''], u'exact_date_and_time': [u''], u'latitude': [u'25.36698180'], u'csrfmiddlewaretoken': [u'AJTXFtEYQbX0pdBdvSe53443HKHN5dvg'], u'method': [u'MAP'], u'coordinate_uncertainty_in_meters': [u'200'], u'form-1-form-TOTAL_FORMS': [u''], u'elevation': [u''], u'country_0': [u'Estonia'], u'timespan_begin': [u'25-03-2013 11:08'], u'locality_text': [u'Ravila 19'], u'additional_users_view_0': [u''], u'timespan_end': [u''], u'form-TOTAL_FORMS': [u'3'], u'form-INITIAL_FORMS': [u'0'], u'form-2-form-INITIAL_FORMS': [u''], u'taxon_node_0': [u'Fungi'], u'taxon_node_1': [u'5'], u'district_ehak': [u''], u'form-2-observed_by_1': [u'3'], u'form-2-observed_by_0': [u'Observer THREE'], u'form-1-observed_by_0': [u'Observer TWO'], u'form-1-observed_by_1': [u'1'], u'form-2-form-TOTAL_FORMS': [u''], u'commune_ehak': [u''], u'additional_users_edit_0': [u''], u'form-MAX_NUM_FORMS': [u''], u'study': [u'2'], u'longitude': [u'15.69302410'], u'additional_workgroups_edit_0': [u''], u'remarks_sample': [u''], u'kingdom_helper': [u'5']}>

Однако, когда я распечатываю сам набор форм, значения form0 и form2 кажутся дублирующимися.

<input type="hidden" name="form-TOTAL_FORMS" value="3" id="id_form-TOTAL_FORMS" />
<input type="hidden" name="form-INITIAL_FORMS" value="0" id="id_form-INITIAL_FORMS" />
<input type="hidden" name="form-MAX_NUM_FORMS" id="id_form-MAX_NUM_FORMS"/>
<tr>
    <th>
        <label for="id_form-0-observed_by_0"></label>
    </th>
    <td>
        <input style="width: 200px" name="form-0-observed_by_0" required="True" value="Observer THREE" id="id_form-0-observed_by_0" data-selectable-type="text" data-selectable-allow-new="false" data-selectable-url="/selectable/agent-personlookup/" type="text" class="span12"/>
        <input data-selectable-type="hidden" name="form-0-observed_by_1" id="id_form-0-observed_by_1" required="True" type="hidden" style="width: 200px" value="3" class="span12" />
    </td>
    </tr> 
<tr>
    <th>
        <label for="id_form-1-observed_by_0"></label>
    </th>
    <td>
        <input style="width: 200px" name="form-1-observed_by_0" required="True" value="Observer ONE" id="id_form-1-observed_by_0" data-selectable-type="text" data-selectable-allow-new="false" data-selectable-url="/selectable/agent-personlookup/" type="text" class="span12"/>
        <input data-selectable-type="hidden" name="form-1-observed_by_1" id="id_form-1-observed_by_1" required="True" type="hidden" style="width: 200px" value="1" class="span12"/>
    </td>
</tr>
<tr>
    <th>
        <label for="id_form-2-observed_by_0"></label>
    </th>
    <td>
        <input style="width: 200px" name="form-2-observed_by_0" required="True" value="Observer THREE" id="id_form-2-observed_by_0" data-selectable-type="text" data-selectable-allow-new="false" data-selectable-url="/selectable/agent-personlookup/" type="text" class="span12"/>
        <input data-selectable-type="hidden" name="form-2-observed_by_1" id="id_form-2-observed_by_1" required="True" type="hidden" style="width: 200px" value="3" class="span12"/>
    </td>
</tr>

Вид:

def observation_add(request):
if request.method == 'POST':
    print 'REQUEST POST START'
    print request.POST
    print 'REQUEST POST END'
    ObservedByFormset = formset_factory(ObservedByForm)
    observed_by_formset = ObservedByFormset(request.POST)
    print 'DEBUG: FORM BEFORE VALID:', observed_by_formset

  • Нам нужно увидеть ваш код просмотра. 25.03.2013
  • Но это ничего не добавляет в базу данных. Где код, который это делает? 25.03.2013
  • Этот код не имеет значения, поскольку, когда я распечатываю свой набор форм перед is_valid(), я уже получаю неправильные значения. Однако я получаю правильные значения, когда распечатываю request.POST 25.03.2013
  • Как вы рендерите шаблон? 25.03.2013

Ответы:


1

Оказывается, это был jquery.dj.selectable.js, который менял значение скрытых полей и, следовательно, портил бэкенд. Скрипт нужно было разместить точно между формой div и циклом for.

{% for form in formset.forms %}
<script type="text/javascript" src="/static/selectable/js/jquery.dj.selectable.js"></script>
<div id="table_rel">
25.03.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..