2016-10-29 5 views
1

자습서 및 기타 SO 질문을 따르고 html에서 양식과 비슷한 모양의 목록을 표시하는 modelformset_factory이 있지만 실제 양식이 아닙니다. . 표시됩니다django modelformset_factory에는 실제 양식이 포함되어 있지 않습니다.

HTML :

<div ='container'> 

     <div class='row'><tr><th><label for="id_form-0-config_key">Config key:</label></th><td><input id="id_form-0-config_key" maxlength="63" name="form-0-config_key" type="text" value="ClientMustVerify" /></td></tr> 
<tr><th><label for="id_form-0-config_value">Config value:</label></th><td><input id="id_form-0-config_value" maxlength="63" name="form-0-config_value" type="text" value="TRUE" /><input id="id_form-0-id" name="form-0-id" type="hidden" value="3" /></td></tr> <input type="submit" value="Update" /></div> 

     <div class='row'><tr><th><label for="id_form-1-config_key">Config key:</label></th><td><input id="id_form-1-config_key" maxlength="63" name="form-1-config_key" type="text" value="Auditing" /></td></tr> 
<tr><th><label for="id_form-1-config_value">Config value:</label></th><td><input id="id_form-1-config_value" maxlength="63" name="form-1-config_value" type="text" value="FALSE" /><input id="id_form-1-id" name="form-1-id" type="hidden" value="4" /></td></tr> <input type="submit" value="Update" /></div> 

    <div> 

통지는 어디에도 form 태그가 없습니다. 여기 템플릿에서 발췌의 뒤로 작업 :

<div ='container'> 
    {% for form in formset %} 
     <div class='row'>{{form}} <input type="submit" value="Update" /></div> 
    {% endfor %} 
<div> 

예, 나는이 form 태그가없는 경우 submit 버튼을 수동으로 작업에 다음을 얻을 수 있었으면,하지만 물론 추가, 다음 submit 버튼 '수상 아무것도하지 마라. views.py :

from limbo.models import serverConfig 
from django.forms import modelformset_factory 
from django.forms import formset_factory 

def editServer(request): 
    result = serverConfig.objects.values() 
    myConfigs = [entry for entry in result] 

    finalFormSet = modelformset_factory(serverConfig, exclude=('id',), extra=0) 
#other lines 
    return render(request, 'limboHtml/ServerConfiguration.html', {'formset': finalFormSet, 'SubmitMessage': '', 'CurrentConfigs': myConfigs}) 

forms.py :

class serverForm(ModelForm): 
    class Meta: 
     model = serverConfig 
     fields = ['config_key', 'config_value'] 
    def __init__(self, *args, **kwargs): 
     super(serverForm, self).__init__(*args, **kwargs) 
     instance = getattr(self, 'instance', None) 
     if instance and instance.pk: 
      self.fields['config_key'].widget.attrs['readonly'] = True 
      self.fields['config_key'].widget.attrs['disabled'] = True 

및 models.py :

class serverConfig(models.Model): 

    config_key = models.CharField(max_length=63) 
    config_value = models.CharField(max_length=63) 

내가 한 지점에서 finalFormSet = formset_factory(serverForm, extra=0)를 사용하여 시도,하지만 난 그냥 아무 내용도 없어 html로 ...

+0

이 시점에서 필자는'{{form}} '과''앞에'

{% csrf_token %}'을 수동으로 추가하고 있지만, 그 길에서 ... – Keith

답변

1

formset documention에 설명 된대로 양식을 추가해야합니다. 태그를 수동으로 추가하십시오. 이는 단일 양식을 표시 할 때 수행하는 작업과 크게 다르지 않습니다.

formset을 반복하여 하나씩 표시하는 것처럼 보입니다. 즉, 관리 양식을 추가해야합니다.

<form method="post" action=""> 
    {{ formset.management_form }} 
    <div ='container'> 
     {% for form in formset %} 
      <div class='row'>{{form}} <input type="submit" value="Update" /></div> 
     {% endfor %} 
    <div> 
</form> 

또는 관리 양식 누락 또는 잘못 구성에 대한 오류가 발생합니다.

+0

감사합니다, 분명히 나는 ​​그 부분을 놓쳤습니다. 폼 태그를 표시하는 것을 보았고 더 간단한 폼으로 자동 제출하므로, 항상 유사하다고 생각했습니다. – Keith

1

태그 또는 제출 버튼이 포함되어 있지 않습니다. 우리는 템플릿에 자신을 제공해야합니다.

더 읽기 : Working with Forms: Building a form in Django

이유는 <form> 태그를받지 못하고있다입니다 때문에 양식 유효성 검사는 응용 프로그램에서 어디서나 처리 할 수있는 논리적 인 관점에서. 따라서 대상 태그 (명시 적으로 reverse(view_name)을 사용하는), 메서드 및 기타 매개 변수를 사용하여 양식 태그를 명시 적으로 지정해야합니다.

관련 문제