如何在django modelform工厂中渲染不可编辑的字段

时间:2015-04-09 02:55:13

标签: django django-forms django-templates

我想为我的查询集渲染模型表单,它只是一个model.objects.all(),但我不希望所有字段都可以编辑,但我仍然希望不可编辑的字段显示为普通文本。我怎样才能做到这一点?这是我到目前为止所理解的:

所以你根据doc使用modelformsetfactory的方式是这样的: 的观点:

from django.forms.models import modelformset_factory
from django.shortcuts import render_to_response
from myapp.models import Author

def manage_authors(request):
   AuthorFormSet = modelformset_factory(Author, fields=('name', 'title'))
   if request.method == "POST":
       formset = AuthorFormSet(request.POST, request.FILES,
                                  queryset=Author.objects.filter(name__startswith='O'))
       if formset.is_valid():
          formset.save()

       else:
        formset = AuthorFormSet(queryset=Author.objects.filter(name__startswith='O'))
return render_to_response("manage_authors.html", {
    "formset": formset,
})

模板:

 <form method="post" action="">
      {{ formset.management_form }}
      {% for form in formset %}
         {{ form }}
      {% endfor %}
 </form>

而且我也知道你可以渲染单个字段,我知道如何渲染你不希望成为表格一部分但仍然显示的字段。

例如:

  Name(not editable form field)  Team(not editable)  School(editable form field)  Gender(editable)  Phone#(not editable)

1 个答案:

答案 0 :(得分:0)

实际上非常简单,您可以在其中添加{{form}},只需添加{{form.value}},这就是我正在寻找的内容。所以,如果你这样做了:

  {% for x in formset %}

   #in here would be
    {{x.fieldname.value}} #simple

  {% endfor %}