ok ppl i need an advice about my form view: def myform(request): idea_form = ProjectideaForm activity_formset = inlineformset_factory(Projectidea, Activity, extra=5) if request.method == 'POST': form = idea_form(request.POST) formset = activity_formset(request.POST, instance=Projectidea()) if form.is_valid and formset.is_valid: # All validation rules pass new_idea = form.save() for f in formset.forms: f.save(commit=False) f.projectidea = new_idea f.save() return HttpResponseRedirect(new_idea.get_absolute_url()) else: # An unbound form form = idea_form() formset = activity_formset() return render_to_response('fslform.html', { 'form' : form, 'formset': formset, })
this gives me myform_activity.projectidea_id may not be NULL how can i set the foreignkey of the inline forms to the actual parent model? every activity has a foreignkey to projectidea and both should be saved in one hit. bnl wrote: > Thanks. > > Before I suggest anything concrete for the docs, let's see if my > understanding is now right: > > The problem from my point of view was that I didn't think I had any > hidden fields. Hence I didn't loop over them, and didn't think of > them - yes, despite the massive hint in the error message ... :-( > > I think the hidden field in question was in fact the id of the > instance (which exists for the previously saved objects) and was zero > for a "blank" form in the formset ... and I think this only shows up > as an issue when looping over forms in a formset, because the formset > machinery has set up, modified, and uses this hidden field - and I > didn't know it was there. > > (Or is it always there for anything generated by a ModelForm, and I've > never spotted it because I always get my id from my url?) > > (Is this really an edge case? It seems like something one would want > to do for nearly any interesting formset ... lay it out nicely ...) > > Cheers > Bryan > > On Aug 11, 9:45 am, Malcolm Tredinnick <malc...@pointy-stick.com> > wrote: > >> On Tue, 2009-08-11 at 01:12 -0700,bnlwrote: >> >> [...] >> >> >>> Apologies that I'm not asking my questions in the way you'd like, >>> but believe me, I am cutting it down a lot ... and I appreciate that >>> it's still not obvious where the errors are (I would have found >>> them otherwise). In this case, I had cut it down to just field, and >>> it >>> exhibited the problem ... I shouldn't have included the extra line >>> which was just to show why I wanted to do it ... >>> >> Trimming a problem report to the minimum required and no further is part >> science and part black art, so there are going to be times when you just >> get unlucky. In this case, however, the problem is you aren't including >> details so that I or anybody else can actually reproduce the problem. So >> you end up in a position where you have to hope the particular error >> message triggers a "we've seen that before" thought in somebody's head. >> >> A good problem report or request for help contains enough information to >> repeat the problem. Which means, in this case, the form class containing >> the field. >> >> >> >> >>> It would seem that the advice to loop over hidden fields in the >>> template could be promoted to the documentation. >>> >> Well, we already document, in the main formset documentation, including >> the management form if you're doing manual template layout >> (http://docs.djangoproject.com/en/dev/topics/forms/formsets/#using-a-f...) >> and we document including hidden fields if you're doing iteration over form >> fields, in the main forms documentation, >> (http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-hidde...) >> so this isn't undocumented territory. >> >> However, if you feel there's a clearer way to do this without giving it >> undue prominence -- bearing in mind it's an edge case, so shouldn't >> obscure the more regular usage cases or weigh those sections down with >> heavy details -- then please do create a patch and attach it to a >> ticket. Many of our documentation improvements are generated by people >> trying to make something clearer. >> >> Regards, >> Malcolm >> > --~--~---------~--~----~------------~-------~--~----~ > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-users@googlegroups.com > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en > -~----------~----~----~----~------~----~------~--~--- > > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.