JSON을 사용하여 장고에서 여러 모델을 가져 오기위한 마법사를 만들려고합니다. JSON을 사용하는 장고 가져 오기 마법사
- 다음 날을 가져올 것이다
- 은 2 단계로 제출 좀 JSON 항목에 붙여 타격 할 수있는 텍스트 필드
- 를 표시합니다
entries/import/
같은 URL로 이동 : 나는 할 수 있도록하려면 나는이 모델의 목록이 표시됩니다 마법사가 형성 제출해야 내가 칠 수있는 몇 가지 데이터를 변경/검사에 모든 항목이 나는을 사용하려는 것 같습니다
을 저장
this link은 어디에서 JSON을 FormSet으로 변환 할 수 있는지 보여 주지만 아직까지는 작동하지 못했습니다. 아래는 관련 코드로 믿는 것입니다. formset을 step2으로 전달하는 방법을 알아낼 수 있습니까?
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ['text', 'tags']
class ImportForm(forms.Form):
json = forms.CharField(widget=forms.Textarea, label='JSON')
class ImportSelectionForm(forms.Form):
entryFormSet = formset_factory(EntryForm)
FORMS = (
("step1", ImportForm),
("step2", ImportSelectionForm),
)
TEMPLATES = {
"step1": "entries/json_form.html",
"step2": "entries/entry_import_form.html",
}
class ImportWizard(SessionWizardView):
def get_template_names(self):
return [TEMPLATES[self.steps.current]]
def get_form_initial(self, step):
current_step = self.storage.current_step
if current_step == 'step2':
# Not getting here for some reason after submitting step1
prev_data = self.storage.get_step_data('step1')
json = prev_data.get('step1-json', '')
models = serializers.deserialize("json", json)
EntryFormSet = formset_factory(EntryForm)
formset = EntryFormSet(self.request.POST, self.request.FILES)
return self.initial_dict.get(step, {'formset': formset})
return self.initial_dict.get(step, {})
def done(self, form_list, **kwargs):
return HttpResponseRedirect(revierse_lazy('entries:index'))
아마도 2 단계로 가면 방금 만든 모델의 ID를 추가하고 표시하는 특정 URL로 리디렉션됩니다. 하나의 httpresponse를 작성한 다음 보내면됩니다. 또한 오타가있는 것 같습니다 : revierse_lazy –
의도는 step2를 제출할 때까지 모델을 만들지 않으므로 step2 중에 ID가없는 것입니다. 나는 결국 사용자가 step2에서 생성 할 항목을 선택하여 선택할 수있게하고 싶지만 초기 단계는 모든 항목을 만드는 것일뿐입니다. 나는 또한 URL을 깨끗하게 유지하고 싶다. 오타를 지적 해 주셔서 감사합니다. –