2013-05-18 3 views
2

'설정 편집'키/값 페이지를 만드는 편리한 솔루션을 찾고 있습니다.키/값 매개 변수 목록 편집 Formset

매개 변수 모델 :

class Parameter(models.Model): 
    key = models.CharField(max_length=50) 
    value = models.CharField(max_length=250) 
    showInUI = models.SmallIntegerField() 

초기 키/값이 이미 테이블에 삽입됩니다. 내가 그들을로드하고이 선을 사용하여 모델의 formset 공장을 사용하여 보내 해당 formset가 표시 될 때

ParameterFormSet = modelformset_factory(Parameter, extra=0, fields=('key', 'value')) 
parameterFormSet = ParameterFormSet(queryset=Parameter.objects.filter(showInUI=1)) 
return render_to_response('config.html', {'parameterFormSet': parameterFormSet}, context_instance=RequestContext(request)) 

템플릿면은, 키와 값이 입력으로 표시됩니다.

입력란에 읽기 전용 레이블 및 값으로 양식 키를 표시하는 편리한 방법을 찾고 싶습니다. 그리고 제출할 때 장고 표준에 따라 유효성을 검사하십시오.

저는 많은 것들을 읽었습니다. 솔루션이 맞춤 위젯일지도 모르겠지만 신뢰할 수있는 솔루션을 찾을 수 있습니다.

읽어 주셔서 감사합니다.

편집 : 당신이 값을 편집 할 수 원하지 않는 경우

작업 솔루션

views.py

def config(request): 
    ParameterFormSet = modelformset_factory(Parameter, extra=0, fields=('value',)) 
    if request.method == "POST": 
     try: 
      formset = ParameterFormSet(request.POST, request.FILES) 
     except ValidationError: 
      formset = None 
      return HttpResponse("ko") 
     if formset.is_valid(): 
      formset.save() 
      return HttpResponse("ok") 
    #ParameterFormSet = modelformset_factory(Parameter, extra=0, fields=('value',)) 
    parameterFormSet = ParameterFormSet(queryset=Parameter.objects.filter(showInUI=1)) 
    return render_to_response('config.html', {'parameterFormSet': parameterFormSet}, context_instance=RequestContext(request)) 

템플릿

<form method="post"> 
    {% csrf_token %} 
    {{ parameterFormSet.management_form }} 
    {% for form in parameterFormSet %} 
     <div> 
     {{ form.instance.key }} 
     {{ form }} 
     </div> 
    {% endfor %} 
    <input type="submit" /> 
</form> 

답변

1

, 그것을 포함하지 않는 양식 세트를 작성할 때 fields에 있습니다.

ParameterFormSet = modelformset_factory(Parameter, extra=0, fields=('value',)) # don't forget the trailing comma after 'value' otherwise it's not a tuple! 

서식 파일에서 서식 집합의 양식을 반복하고 동시에 키를 표시 할 수 있습니다.

{% for form in parameter_form_set %} 
    {{ form.instance.key }}{# display the key related to this form #} 
    {{ form }}{# display the form #} 
{% endfor %} 
+0

감사합니다. 쉽게 구현하고 사용할 수있는 솔루션입니다. 작업 코드로 내 대답을 편집했습니다. –