def evalution_edit(request, action_pk, evaluation_pk=None): action = get_object_or_404(Action, pk=action_pk, user=request.user) # if this has an evaluation, forward to the try: if action.evaluation and evaluation_pk == None: return HttpResponseRedirect(reverse('journals:actions_evaluation_edit', args=[action.pk, action.evaluation.pk])) except Evaluation.DoesNotExist: pass # instance or not if evaluation_pk is not None: evaluation = get_object_or_404(Evaluation, pk=evaluation_pk) else: evaluation = None # formsets ImageFormSet = inlineformset_factory(Evaluation, EvaluationImage, form=EvaluationImageForm, extra=3) AttachmentFormSet = inlineformset_factory(Evaluation, EvaluationAttachment, form=EvaluationAttachmentForm, extra=3) if request.method == 'POST': form = EvaluationForm(request.POST, instance=evaluation) image_formset = ImageFormSet(request.POST, request.FILES, instance = evaluation) attachment_formset = AttachmentFormSet(request.POST, request.FILES, instance = evaluation) if form.is_valid() and image_formset.is_valid() and attachment_formset.is_valid(): evaluation = form.save(commit=False) evaluation.user = request.user evaluation.action = action evaluation.save() form.save_m2m() # if instance was none, make the formsets again with new instance if evaluation_pk is None: image_formset = ImageFormSet(request.POST, request.FILES, instance=evaluation) attachment_formset = AttachmentFormSet(request.POST, request.FILES, instance=evaluation) # make the action completed action.status = action.COMPLETED action.save() # now save them out images = image_formset.save() attachments = attachment_formset.save() # add a message messages.success(request, 'Evaluation Saved') # return a redirect return HttpResponseRedirect(reverse('journals:actions_evaluation', args=[request.user.pk, action.pk, evaluation.pk ])) if request.method == 'GET': form = EvaluationForm(instance=evaluation) image_formset = ImageFormSet(instance = evaluation) attachment_formset = AttachmentFormSet(instance = evaluation) return render_to_response('journals/evalution_edit.html', RequestContext(request,{ 'form' : form, 'image_formset' : image_formset, 'attachment_formset' : attachment_formset, 'evaluation' : evaluation, 'action': action, }))