2017-03-20 5 views
0

非常にdjangoの新機能です。 htmlページの新しい行にモデルフォームの各フィールドを入れたいと思います。私は使用しようとしましたが、それは動作しません。これどうやってするの?ここで私が持っているHTMLは、データをキャプチャするために私のフォームを表示するページです。django形式で各フィールドの新しい水平行を作成する方法は?

<!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'] 
+0

あなたの投稿には情報がありません。あなたが使ったのは何ですか?このテンプレートのビューには何が入っていますか? –

+0

リリーフありがとう、私は投稿に含めるべきことが他にはありませんでしたが、私のviews.pyも表示するように更新しました。 – kflaw

+0

私が使用しているサンプルと私が使っているサンプルの違いは、既存のレコードを気にせず、新しいレコードを追加したいということです。それを見続けるだろう – kflaw

答えて

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 
     }) 
+0

あなたの答えをありがとうと感謝のために、私はまだ物事が何を意味しているかを考えている。上記のようにrecord_listに変更すると、新しいレコードを追加するフォームではなく、既存のテーブルにレコードが表示されるようになりました。私は何が欠けていますか?私はこのサイトのコードを変更しました:https://codingair.wordpress.com/2015/07/20/django-use-modelform-to-list-and-create-user-data/ – kflaw

+0

それは両方を表示する必要があります:行の下のフォーム。そうでない場合は、 'form_mapindex'をよく見てください。 –

+0

私はフォームクラスを作成するところで私のforms.pyも投稿しました。まだ何が起こっているのか分からない。 – kflaw

関連する問題