我想用我的Django FormWizard編輯現有的對象。我遵循this blog post中描述的技術,但它不起作用。這裏是我的編輯觀點:編輯Django Formwizard:獲取初始數據
@login_required
def edit_wizard(request, id):
thing = get_object_or_404(Thing, pk=id)
if thing.user != request.user:
raise HttpResponseForbidden()
else:
initial = {0: {'year': thing.year,
'make': thing.make,
'series': thing.series,
....etc.
},
1: {'condition': thing.condition,
....etc.
},
}
form = CreateWizard.as_view([StepOneForm, StepTwoForm, StepThreeForm], initial_dict=initial)
return form(context=RequestContext(request), request=request)
你能不能幫我找出如何提供初始數據嚮導,這樣我可以允許用戶編輯自己的對象嗎?感謝您的想法!
編輯:(13年2月18日)
是越來越答:
TypeError at /edit/10/ __init__() takes exactly 1 argument (3 given)
這是由以下@ sneawo的回答解決了,但仍然沒有初始數據過去了,而不是創建新的對象。
編輯:(13年2月19日)
class CreateWizard(SessionWizardView):
file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT))
def done(self, form_list, **kwargs):
instance = Thing()
for form in form_list:
for field, value in form.cleaned_data.iteritems():
setattr(instance, field, value)
instance.user = self.request.user
instance.save()
return render_to_response('wizard-done.html', {
'form_data': [form.cleaned_data for form in form_list],
})
爲什麼你使用'東西=東西''在條件else'(用戶= request.user)? – sneawo 2013-02-18 22:00:45
哦,是的。我的錯。刪除那個條件,但是,現在有一個'TypeError:__init __()只需要1個參數(給出3個)'。上面增加了細節。感謝您的任何想法! – 2013-02-18 22:15:31
你還可以顯示'CreateWizard'類的代碼嗎? – sneawo 2013-02-19 08:35:08