@login_required
def create_new_family(request, case_pk):
case = Case.objects.get(pk=case_pk)
clients = Client.objects.filter(case=case_pk)[:2]
formset = {}
for client in clients:
if request.method == 'POST':
for client in clients:
formset[
client.pk][
'parents'] = ParentsFormset(request.POST, prefix=
'parents_' + str(
client.pk),)
formset[
client.pk][
'siblings'] = SiblingsFormset(request.POST, prefix=
'siblings_' + str(
client.pk))
formset[
client.pk][
'children'] = ChildrenFormset(request.POST, prefix=
'children_' + str(
client.pk))
formset[
client.pk][
'stepchildren'] = StepChildrenFormset(request.POST, prefix=
'stepchildren_' + str(
client.pk))
err = 0
for client_id, fs_dict in formset.items():
if not all(form.is_valid() for fs_type, form in fs_dict.items()):
err = err + 1
if err == 0:
for client_id, fs_dict in formset.items(): # a is client_id ## b is formset dict
if all(form.is_valid() for fs_type, form in fs_dict.items()):
for idx, fs in fs_dict.items(): # at this point all fs are formset instances
if fs.is_valid():
instances = fs.save(commit=False)
for instance in instances:
instance.client = Client.objects.get(pk=client_id)
instance.save()
return HttpResponseRedirect(reverse('family-create', kwargs={'case_pk': case_pk}))
else:
for client in clients:
queryset=Parent.objects.filter(client=client))
queryset=Sibling.objects.filter(client=client))
queryset=Children.objects.filter(client=client))
formset[
client.pk][
'stepchildren'] = StepChildrenFormset(prefix=
'stepchildren_' + str(
client.pk),
queryset=StepChildren.objects.filter(client=client))
return render(request, 'clients/client_form.html', {
'formsets': formset,
'clients': clients,
'case': case,
'breadcrumbs': 'Family & Dependants'
})