私はdjangoフォームとテンプレートを使用してデータをデータベースに挿入できました。非常に基本的なHTMLページにデータを表示することもできます。しかし、データの編集方法を完全に理解することはできません。私は少なくとも新しいデータベースエントリを作成するために使用したdjangoテンプレートを再利用できると仮定しているので、エントリを編集して "編集"テンプレートを作成する必要はありません。フォームでデータを編集
あなたはコンソールのエントリをブラウザで編集することができますが、私は表示されたリンクをクリックすると、どの変数が私の主キーを運ぶかを頭に浮かべているように見えませんどのようにしてデータベースから取り出したデータをフォームに渡して編集などできるようにするのですか?
ここに私の挿入コードがあります:これを修正して、vehicle.htmlに表示されているデータをさらに編集する方法を教えてください。
{% for v in obj %}
<tr><td><a href="/vehicle/{{v.id}}/">{{ v }}</a></td></tr>
{% endfor %}
-
views.py
vehicle_addデータベースに挿入
def vehicle_add(request):
if request.method == 'POST':
form = VehicleForm(request.POST)
if form.is_valid():
newvehicle = Vehicle()
vdetails = form.cleaned_data
newvehicle.reg_number= vdetails['regnumber']
newvehicle.model= vdetails['model']
newvehicle.manufacturer= vdetails['manufacturer']
newvehicle.year= vdetails['year']
newvehicle.chassis_number= vdetails['chasisnumber']
Vehicle.save(newvehicle)
return HttpResponseRedirect('/vehicle')
else:
form = VehicleForm()
return render_to_response('vehicle_add.html', {'form': form}, context_instance=RequestContext(request))
vehicle.htmlは、以下のような単純なHTML形式のデータをロードします
リンクは次のように表示されます:http://localhost:8000/vehicle_add/2/
詳細: vehicle_add.html
{% extends "base.html" %}
{% block title %}Add Vehicle{% endblock %}
{% block page %}Add Vehicle{% endblock %}
{% block content %}
<html>
<head>
<style type="text/css">
ul.errorlist {
margin: 0;
padding: 0;}
.errorlist li {
background-color: red;
color: white;
display: block;
font-size: 10px;
margin: 0 0 3px;
padding: 4px 5px;}
</style>
</head>
<body>
<section id = "mainform">
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %}
<form action="" method="post">{% csrf_token %}
<div class="field">
{{ form.regnumber.errors }}
<label for="id_regnumber">Reg #:</label>
{{ form.regnumber }}</div>
<div class="field">
{{ form.model.errors }}
<label for="id_model">Model:</label>
{{ form.model }}</div>
<div class="field">
{{ form.manufacturer.errors }}
<label for="id_manufacturer">Manufacturer:</label>
{{ form.manufacturer }}</div>
<div class="field">
{{ form.year.errors }}
<label for="id_year">Year:</label>
{{ form.year }}</div>
<div class="field">
{{ form.chasisnumber.errors }}
<label for="id_chasisnumber">Chasis #:</label>
{{ form.chasisnumber }}</div>
<div class="field">
<input type="submit" value="Submit">
<input type="submit" value="Clear">
</div></form></section>
</body>
</html>
{% endblock %}
試行錯誤:
これは私が私の見解ではなく運で何をしてきたものです。
def vehicle_add(request):
if request.method == 'POST':
form = VehicleForm(request.POST)
if form.is_valid():
newvehicle = Vehicle()
vdetails = form.cleaned_data
newvehicle.reg_number= vdetails['regnumber']
newvehicle.model= vdetails['model']
newvehicle.manufacturer= vdetails['manufacturer']
newvehicle.year= vdetails['year']
newvehicle.chassis_number= vdetails['chasisnumber']
Vehicle.save(newvehicle)
return HttpResponseRedirect('/vehicle')
else:
#WORKING ON THIS
form = VehicleForm
newvehicle = Vehicle.objects.get(pk=9)
form = VehicleForm(newvehicle)
return render_to_response('vehicle_add.html', {'form': form}, context_instance=RequestContext(request))
しかし、私はエラーの種類が異なります。それがどうやっているのかわからない。誰かが私を正しい方向に向けることができますか?ここで
EDIT
は、現在のエラーです:
Caught AttributeError while rendering: 'Vehicle' object has no attribute 'get'
In template d:\dev\workspace\vehicle_request\vehicle_request\mvmanager\templates\vehicle_add.html, error at line 31
これは、テンプレートのこの部分をhighligths:forms.py {{ form.regnumber }}
class VehicleForm(forms.Form):
regnumber = forms.CharField(
max_length=7,
label='Reg #:',
widget = forms.TextInput(attrs={'size':7}) )
model = forms.CharField(
label='Model',
widget = forms.TextInput(attrs={'size':25}) )
manufacturer = forms.CharField(
max_length=25,
label='Manufacturer',
widget = forms.TextInput(attrs={'size':25}) )
year = forms.IntegerField(
label='Year',
widget = forms.TextInput(attrs={'size':4}) )
chasisnumber = forms.CharField(
required=False, label='Chasis #',
widget = forms.TextInput(attrs={'size':25}) )
は、あなたが同様のエラーを提供してもらえますか? –
エラーメッセージが追加されました。ありがとう – lukik
フォームはどこですか?特に、 'regnumber'フィールドまたは' reg_number'フィールドを持っていますか? – Marcin