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)