我是新來的Django,但我似乎有幾乎相同的代碼在另一個網站上工作。我可以更新Django shell中的記錄,但是在view.py中,當我運行此表單時,相同的代碼堅持插入新記錄。Django形式插入當我想要更新
- 我在模型中有一個「DisciplineEvent」對象。我讓Django爲主鍵創建「id」字段。我可以看到使用MySQL中的auto_increment創建了「id」int列
- DisciplineEventEntryForm形式是從「DisciplineEvent」模型對象創建的。
- 要編輯一條記錄,填入表單並將pk放入名爲「id」的隱藏字段中,該字段似乎與POST數據一起提交。
所以view.py的相關部分是這樣的:
if request.method == 'POST':
incidentId = request.POST['id']
editedEvent = DisciplineEvent.objects.get(pk=int(incidentId))
form = DisciplineEventEntryForm(request.POST, instance=editedEvent)
form.save()
variables = Context({
'account': account,
'date': request.POST['event_date'],
'description': request.POST['incident_description'],
'incident_id':incidentId,
})
template = get_template('disciplineform_confirm_entry.html')
output = template.render(variables)
response = HttpResponse(output)
return response
我認爲這將拉動記錄有問題,新形式的數據保存到它,並更新記錄。相反,它會創建一個包含所有數據和遞增主鍵的新記錄。
你可以包括你的表單定義嗎? – Wogan 2010-03-04 05:02:08
,也可能是模板代碼。將'id'作爲POST成員可能不是一個好主意。我現在很難過,但是你的代碼有點不合常規,所以很難猜測問題出在哪裏。 – 2010-03-04 05:53:11
我只會保存表單,如果它是有效的......你確定'DisciplineEvent.objects.get(pk = int(incidentId))'返回一個對象嗎?也許有什麼東西壞了,'editEvent'不包含任何對象。 – 2010-03-04 07:15:28