này bây giờ bị phản đối sử dụng liên kết này: https://github.com/vikingco/django-formtools-addons
tôi muốn chia sẻ cài đặt của tôi nếu có bất kỳ sự trợ giúp nào cho bất kỳ ai:
class BaseImageFormSet(BaseModelFormSet):
def __init__(self, *args, **kwargs):
super(BaseImageFormSet, self).__init__(*args, **kwargs)
self.queryset = Images.objects.none()
ImageFormSets = modelformset_factory(Images, formset=BaseImageFormSet, fields=('picture',), extra=2)
form_list = [("step1", CategoryForm),
("step2", CityForm),
("step3", (
('lastform', LastForm),
('imageform', ImageFormSets)
))
]
templates = {"step1": "create_post_category.html",
"step2": "create_post_city.html",
"step3": "create_post_final.html"}
class OrderWizard(SessionMultipleFormWizardView):
file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'photos'))
def get_template_names(self):
return [templates[self.steps.current]]
def render(self, forms=None, **kwargs):
forms = forms or self.get_forms()
context = self.get_context_data(forms=forms, **kwargs)
#print(forms[1](queryset = Images.objects.none()))
return self.render_to_response(context)
def done(self, form_list, form_dict, **kwargs):
form_data_dict = self.get_all_cleaned_data()
#print(form_data_dict)
result = {}
instance = Post()
#print(form_dict)
for key in form_dict:
form_collection = form_dict[key]
#print(form_collection)
for key in form_collection:
form = form_collection[key]
print('printing form %s' % key)
#if isinstance(form, forms.ModelForm):
if key == 'lastform':
post_instance = form.save(commit=False)
nodes = form_data_dict.pop('nodes')
city = form_data_dict.pop('city')
post_instance.save()
post_instance.category.add(nodes)
post_instance.location.add(city)
print('lastfome as esu ')
if key == 'imageform':
for i in form_data_dict['formset-step3']:
picture = i.pop('picture')
images_instance = Images(post=post_instance, picture=picture)
images_instance.save()
return render_to_response('create_post_done.html', {
'form_data': result,
#'form_list': [form.cleaned_data for form in form_list],
})
Nguồn
2017-02-05 18:08:34
sau khi dành hàng giờ cho vấn đề này, cuối cùng tôi đã tìm thấy giải pháp có vẻ như : https://code.djangoproject.com/ticket/18830 nhưng nó không phải là một cách đáp ứng tôi, bởi vì tôi không thể sử dụng một vòng lặp như tôi được đăng để có được các lĩnh vực hình thức. Bất kỳ ý tưởng nào khác? – mdargacz
vòng lặp được sử dụng trong trường hợp một bộ định dạng. Tại sao bạn cần thêm nhiều biểu mẫu trong một bước? – mariodev
có thể bạn đang tìm kiếm các biểu mẫu https://docs.djangoproject.com/en/1.5/topics/forms/formsets/#django.forms.formsets.BaseFormSet – SaulTigh