【问题标题】:How can I render uneditable fields in django modelform factory如何在 django modelform factory 中呈现不可编辑的字段
【发布时间】:2015-04-09 02:55:12
【问题描述】:

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

所以你根据文档使用 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)

【问题讨论】:

    标签: django django-forms django-templates


    【解决方案1】:

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

      {% for x in formset %}
    
       #in here would be
        {{x.fieldname.value}} #simple
    
      {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 2016-04-01
      • 1970-01-01
      • 2013-11-19
      • 2019-11-22
      • 2018-05-31
      • 2017-08-04
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      相关资源
      最近更新 更多