2013-03-25 3 views
1

저는 장고 템플릿에서 jQuery.formsets로 더 많은 폼을 동적으로 생성하고 있습니다. 문제는 데이터베이스에 중복 값이 ​​입력된다는 것입니다.Django formset 중복 값

jQuery.formsets에서 생성 된 ID가 올바른지 여부는 request.POST를보기에서 인쇄 할 때 올바른 값을 표시하기 때문입니다. 문제

값은 '관찰자 ONE/두/세'를 클릭하기 전에 다음 ID로 제출

  • id_form-0-observed_by_0
  • 형태-1-id_form-0-observed_by_0
  • 형태 -2- id_form -0- observed_by_0

request.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']}> 
,

그러나 formset 자체를 인쇄 할 때 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 
+1

조회 코드를 확인해야합니다. –

+0

저기 있습니다 : =) – ObviousCat

+0

하지만 그건 아무것도 데이터베이스에 넣고있어. 그 코드는 어디에 있습니까? –

답변

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">