如何在django表单中为每个字段创建新的水平行?

时间:2017-03-20 21:44:40

标签: django django-forms django-templates

django很新。我希望在html页面的新行中将每个字段放在一个模型中。我尝试过使用但是没有用。我怎样才能做到这一点?这是我用于显示我的用于捕获数据的表单的页面的html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
  <body>
    <table>
        <thead><th>{{title}}</th>   

        {% for record in record_list%}
        <tr><td>{{record.county}}</td></tr>
        <tr><td>{{record.route}}</td></tr>
        <tr><td>{{record.pmb}}</td></tr>
        <tr><td>{{record.pme}}</td></tr>
        <tr><td>{{record.map_sheet_desc}}</td></tr>
        <tr><td>{{record.drawingdate}}</td></tr>
        <tr><td>{{record.index_map_filepath}}</td></tr>
        <tr><td>{{record.grantor_box_filepath}}</td></tr>
        <tr><td>{{record.control_map_filepath}}</td></tr>
        <tr><td>{{record.info_sheet_filepath}}</td></tr>
        <tr><td>{{record.mapdatum}}</td></tr>
        {% endfor %}
    </table>
    <form method="POST" action="/update/">
        <fieldset>
            <legend>Create Map Index Record</legend>
            {% csrf_token %}
            {{form_mapindex}}
            <br><button type="submit">Create Record</button>
        </fieldset>
    </form>
  </body>
</html>

这是我的views.py中的代码:

from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.views.generic import View
from .models import Mapindex as MapIndexModel
from .forms import MapIndexForm

class MapIndexView(View):
    template_name = 'add.html'

    def get(self, request):
        record_list = []
        form_mapindex = MapIndexForm()
        records = MapIndexModel.objects.all()[:50]

        for record in records:
            record_list.append({'county': record.county, 'route': record.route, 'pmb': record.pmb, 'pme': record.pme,
                                'map_sheet_desc': record.map_sheet_desc, 'drawingdate': record.drawingdate,
                                'index_map_filepath': record.index_map_filepath, 'grantor_box_filepath': record.grantor_box_filepath,
                                'control_map_filepath': record.control_map_filepath, 'info_sheet_filepath': record.info_sheet_filepath,
                                'mapdatum': record.mapdatum})

        return render(request, self.template_name, {
            'title': 'Map Index Update Form',
            'mapindex_list': record_list,
            'form_mapindex': form_mapindex
        })

    def post(self, request):
        form_mapindex = MapIndexForm(request.POST)
        if form_mapindex.is_valid():
            form_mapindex.save()
            return HttpResponseRedirect('/update/')

这里是forms.py:

from django import forms
from .models import Mapindex

class MapIndexForm(forms.ModelForm):
    class Meta:
        model = Mapindex
        fields = ['county', 'route', 'pmb', 'pme', 'map_sheet_desc', 'drawingdate', 'index_map_filepath',
                  'grantor_box_filepath', 'control_map_filepath', 'info_sheet_filepath', 'mapdatum']

1 个答案:

答案 0 :(得分:1)

您正在返回record_list,但会将其分配给mapindex_list。在模板中迭代mapindex_list或更改渲染函数中的名称以匹配:

return render(request, self.template_name, {
            'title': 'Map Index Update Form',
            'record_list': record_list,
            'form_mapindex': form_mapindex
        })