2017-05-19 4 views
0

私はpostgresqlバックエンドを持つdjangoアプリケーションを開発中です。私は最終的にいくつかのWebフォームを起動するプロセスを通過するpythonスクリプトを持っています。データベースのテーブルの各レコードに1つずつ、修正が必要です。このスクリプトは、IDのリストを繰り返して、どのレコードを変更する必要があるかを判断し、一度にフォームを起動します。いくつかのフォームは変更を受け入れて保存しますが、一部のフォームは変更を保存しません。また、フォームをリロードして追加の変更を行うと、変更が保存されることはありません。私は何が間違っているのか分からないのですか? djangoを初めて使うここでは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"> 
     {% load static %} 
<link rel="stylesheet" type="text/css" href="{% static 'update/css/forms.css' %}" /> 
    </head> 
<body> 
    {% if messages %} 
    <ul class="messages"> 
     {% for message in messages %} 
     <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> 
     {% endfor %} 
    </ul> 
    {% endif %} 
    <div><label class="page_header">{{title}}<label><div> 
    <form method="POST" action=""> 
     <div><fieldset class="fieldset"> 
      <legend class="legend">Create Map Index Record</legend> 
      {% csrf_token %} 
      {% for field in form_mapindex.hidden_fields %} 
       {{ field }} 
       <br> 
      {% endfor %} 

      {% for field in form_mapindex.visible_fields %} 
       <label class="formlabel">{{ field.label_tag }} 
       <br> 
       {{ field }} 
       <br> 
      {% endfor %} 

      <br><button class="button" type="submit">Save Record</button> 
     </fieldset></div> 
     {% if form.errors %} 
      {% for field in form %} 
       {% for error in field.errors %} 
        <div class="alert alert-danger"> 
         <strong>{{ error|escape }}</strong> 
        </div> 
       {% endfor %} 
      {% endfor %} 
      {% for error in form.non_field_errors %} 
       <div class="alert alert-danger"> 
        <strong>{{ error|escape }}</strong> 
       </div> 
      {% endfor %} 
     {% endif %} 
    </form> 
    </body> 
</html> 

はforms.pyです:ここ

from django import forms 
from .models import Mapindex 

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

     widgets = {'objectid': forms.HiddenInput(), 
        'drawingdate': forms.SelectDateWidget(years=range(1900, 2021))} 

     labels = { 
      'sheetlabel': 'Sheet Label', 
      'image_path_filename': 'PDF Filepath', 
      'county': 'County', 
      'route': 'Route', 
      'map_sheet_desc': 'Map Sheet Description', 
      'drawingdate': 'Drawing Date', 
      'index_map_filepath': 'Index Map Filepath', 
      'grantor_box_filepath': 'Grantor Box Filepath', 
      'control_map_filepath': 'Control Map Filepath', 
      'info_sheet_filepath': 'Info Sheet Filepath', 
      'mapdatum': 'Map Datum' 
     } 

はviews.pyです:

from django.http import request, HttpResponse 
from django.shortcuts import render, get_object_or_404, redirect, render_to_response 
from .models import Mapindex as MapIndexModel 
from .forms import MapIndexForm 
from django.contrib import messages 


def mapindex_edit(request, row_id): 
    record = get_object_or_404(MapIndexModel, pk=row_id) 
    record.refresh_from_db() 
    form_mapindex = MapIndexForm(request.POST or None, instance=record) 

    if request.POST: 
     if form_mapindex.is_valid(): 
      print 'form is valid' 
      form_mapindex.save() 
      messages.success(request, 'Record Saved!') 
     else: 
      print 'form is not valid' 

    return render(request, 'edit.html', { 
     'title': 'Map Index Update Form', 
     'form_mapindex': form_mapindex 
    }) 

、ここでは、その起動Pythonスクリプトからの抜粋ですフォーム:

for oid in new_oid_list: 
     url = 'http://sv04gis.ct.dot.ca.gov/mapindex/update/' + str(oid) 
     webbrowser.open(url) 

答えて

0

あなたはあなたの意見に変更があります。

def mapindex_edit(request, row_id): 
    record = get_object_or_404(MapIndexModel, pk=row_id) 
    record.refresh_from_db() 
    if request.method == 'POST': 
     form_mapindex = MapIndexForm(request.POST or None, instance=record) 
     if form_mapindex.is_valid(): 
      form_mapindex.save() 
      messages.success(request, 'Record Saved!') 
    else: 
     form_mapindex = MapIndexForm() 
    return render(request, 'edit.html', { 'title': 'Map Index Update Form', 'form_mapindex': form_mapindex }) 
関連する問題