Update:

So editing AdviceLevel with

def edit_advice(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect('/user/login/')
    this_advice = request.POST.get('advice_id')
    sp = Specialism.objects.all().filter(advicelevel=this_advice)
    de = CRSDeliveryMethod.objects.all().filter(advicelevel=this_advice)
    lo = Location.objects.all().filter(advicelevel=this_advice)
    help = OrganisationHelpTexts.objects.all()
    advice = request.POST.get('advice')
 #   adv = Advice.objects.get(title=advice)
 #   id_adv = adv.id
    this_org = request.session['this_org']
    this = Organisation.objects.get(pk=this_org)
    id_org = this.id
    thisadvlvl = AdviceLevel.objects.get(pk=this_advice)
    level_1 = thisadvlvl.level_1
    level_2 = thisadvlvl.level_2
    level_3 = thisadvlvl.level_3
    level_4 = thisadvlvl.level_4

    advkey = AdviceLevelKey.objects.all()
    if request.POST:
    #    raise NameError(request.POST)
        if 'adviceid' in request.POST:
            return HttpResponseRedirect('/directory/delete_advice/')
        if 'editform' in request.POST:
            editform = EditAdviceLevelForm(request.POST, 
instance=thisadvlvl)
            if editform.is_valid():
                error = ""
                level_1 = editform.cleaned_data['level_1']
                level_2 = editform.cleaned_data['level_2']
                level_3 = editform.cleaned_data['level_3']
                level_4 = editform.cleaned_data['level_4']
                service_restriction = 
editform.cleaned_data['service_restriction']
                service_supervisor = 
editform.cleaned_data['service_supervisor']
                specialism = editform.cleaned_data['specialism']
                delivery_method = editform.cleaned_data['delivery_method']
                face_to_face_locations = 
editform.cleaned_data['face_to_face_locations']
                if (level_3 == 0 and level_4 == 1) or (level_2 == 0 and 
(level_3 == 1 or level_4 == 1)) or (level_1 == 0 and (level_2 == 1 or 
level_3 == 1 or level_4 == 1)):
                    error = "That isn't a possible combination, the tiers 
are progressive"
                    editform = EditAdviceLevelForm(request.POST, 
instance=thisadvlvl)
                    return render_to_response('directory/edit_advice.html', 
{'thisadvlvl': thisadvlvl, 'help': help, 'sp': sp, 'lo': lo, 'de': de, 
'advice': advice, 'advkey': advkey, 'editform': editform, 'level_1': 
level_1, 'level_2': level_2, 'level_3': level_3, 'level_4': level_4, 
'this_advice': this_advice, 'error': error, 
},context_instance=RequestContext(request))
                editform.save()
                return HttpResponseRedirect('/directory/do_advice/')

        else:
            editform = EditAdviceLevelForm(request.POST, 
instance=thisadvlvl)
    else:
        editform = EditAdviceLevelForm(instance=thisadvlvl)
    return render_to_response('directory/edit_advice.html', {'thisadvlvl': 
thisadvlvl, 'help': help, 'sp': sp, 'lo': lo, 'de': de, 'advice': advice, 
'advkey': advkey, 'editform': editform, 'level_1': level_1, 'level_2': 
level_2, 'level_3': level_3, 'level_4': level_4, 'this_advice': 
this_advice, },context_instance=RequestContext(request))

works both adding or deleting a many to many related field so the 
difference is in the save methods
editform.save() in this working case and 
af = adviceform.save(commit=False)
af.organisation = organisation
af.save()
which doesn't

Now I deliberately used commit = False because I wanted to prepopulate the 
organisation rather than have the user select(again) the organisation so I 
therefore had to add the value of organisation to the form save hence using 
commit=False, unless someone can spot an error somewhere that is causing 
the problem or knows of a differnt way of accomplishing what commit does.  
Cannot just save the form as adviceform.save() because organisation MUST 
have a value see the Organisation model.
Any ideas?


-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/97de130b-1f4f-492b-938e-e18d28dfd5da%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to